小编hek*_*ran的帖子

如何链接由Webpack 4拆分的块?

问题

我有一个使用Webpack 4的项目,并且想要启用代码拆分。我有此配置来启用拆分块。

  optimization: {
    splitChunks: {
      chunks: 'all'
    },
  }
Run Code Online (Sandbox Code Playgroud)

当我运行构建时,我得到一些文件名:

about-d434910cfbfb3b1f4f52.js
billing-d434910cfbfb3b1f4f52.js
login-d434910cfbfb3b1f4f52.js
vendors~about~billing~login~~97fa390a-d434910cfbfb3b1f4f52.js
Run Code Online (Sandbox Code Playgroud)

about.jsbilling.jslogin.js是我的切入点。供应商文件包含在这3个页面上使用的jQuery。我的理解是,我需要在模板中编写2个脚本标签,例如:

<script type="text/javascript" src="http://0.0.0.0:8000/assets/bundles/vendors~about~billing~login~~97fa390a-d434910cfbfb3b1f4f52.js" ></script>
<script type="text/javascript" src="http://0.0.0.0:8000/assets/bundles/about-d434910cfbfb3b1f4f52.js" ></script>
Run Code Online (Sandbox Code Playgroud)

这是有道理的,但我不清楚我如何知道如何连接哪个供应商文件和哪个入口点文件。在这种情况下,只有一个供应商文件,但是我的项目有更多依赖关系,因此实际上可能还有3个。更不用说这些会随着代码的改变而改变。

与Require.js的比较

在Require.js中,您可以执行以下操作:

define(['jquery', 'my-module'], function($, myModule) {
  ...
});
Run Code Online (Sandbox Code Playgroud)

并从服务器获取jQuery。在Webpack 4中,这将是:

import $ from 'jquery';
import MyModule from 'my-module';
Run Code Online (Sandbox Code Playgroud)

但是,当您在Webpack中执行此操作时,必须将依赖项捆绑包作为脚本标签列出。导入后将不会下载jQuery。

Webpack动态导入

我知道Webpack具有动态导入,它会返回一个承诺:

import('lodash').then(_ => {
    ...
});
Run Code Online (Sandbox Code Playgroud)

这类似于Require.js,但用于隔离应用程序功能。这不是我想要的。如果import()可以使用多个模块名称,那也许行得通,而我只是使用它来导入所有内容,但这绝对不是按照文档说明使用此功能的方式。

问题

1)您应该如何以编程方式知道哪些文件取决于哪个文件,以便可以呈现正确的脚本标签?

2)import当模块尚未在页面中链接时,是否有一种方法可以用来获得AMD进行下载的行为?

webpack webpack-4

5
推荐指数
1
解决办法
728
查看次数

以编程方式通过Python代理发出HTTP请求

如何使用Python通过代理发出HTTP请求?

我需要对以下代码做什么?

urllib.urlopen('http://www.google.com')
Run Code Online (Sandbox Code Playgroud)

python proxy http

4
推荐指数
1
解决办法
3845
查看次数

从Pylons发送电子邮件

我正在使用Pylons开发应用程序,我希望我的控制器操作能够将电子邮件发送到某些地址.是否有用于发送电子邮件的内置Pylons功能?

python pylons

4
推荐指数
1
解决办法
1520
查看次数

在Django中将一个块放在另一个块中

我有一个Django模板,我想在多个地方扩展.在某些情况下,div必须位于一个表单中,而在其他情况下则不能存在.为此,我在div的上方和下方放置一个块,以便我可以分别添加和插入它们.

期望:

<form>
<div class="my_div">
  {% block div_content %}
    ...
  {% endblock %}
</div>
</form>
Run Code Online (Sandbox Code Playgroud)

模板:

{% block div_top %}{% endblock %}
<div class="my_div">
  {% block div_content %}
  {% endblock %}
</div>
{% block div_bottom %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)

看着这个我不禁认为有更好的方法来做到这一点.Django的标准方法是什么?

django templates django-templates

4
推荐指数
1
解决办法
4048
查看次数

Django的post_save信号对使用多表继承的模型表现得很奇怪

Django的post_save信号对使用多表继承的模型表现得很奇怪

我注意到Django的post_save信号在使用具有多表继承的模型时的奇怪行为.

我有这两个模型:

class Animal(models.Model):
    category = models.CharField(max_length=20)

class Dog(Animal):
    color = models.CharField(max_length=10)
Run Code Online (Sandbox Code Playgroud)

我有一个名为echo_category的帖子保存回调:

def echo_category(sender, **kwargs):
    print "category: '%s'" % kwargs['instance'].category
post_save.connect(echo_category, sender=Dog)
Run Code Online (Sandbox Code Playgroud)

我有这个装置:

[
    {
        "pk": 1,
        "model": "animal.animal",
        "fields": {
            "category": "omnivore"
        }
    },

    {
        "pk": 1,
        "model": "animal.dog",
        "fields": {
            "color": "brown"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

在程序的每个部分中,除了post_save回调之外,以下情况都是如此:

from animal.models import Dog
Dog.objects.get(pk=1).category == u'omnivore' # True
Run Code Online (Sandbox Code Playgroud)

当我运行syncdb并安装fixture时,运行echo_category函数.syncdb的输出是:

$ python manage.py syncdb --noinput
Installing json fixture 'initial_data' from '~/my_proj/animal/fixtures'.
category: ''
Installed 2 object(s) from 1 fixture(s)
Run Code Online (Sandbox Code Playgroud)

这里奇怪的是dog对象的category属性是一个空字符串.为什么它不像其他地方那样"杂食"? …

django django-models

4
推荐指数
1
解决办法
1333
查看次数

是否可以使用C为GNU Emacs编写自定义基元?

使用Emacs Lisp可以轻松扩展GNU Emacs.在某些情况下,即使在字节编译之后,您也可能会遇到性能问题.在这种情况下,能够编写可以从Emacs Lisp代码调用的C函数是有用的.这可能吗?你怎么做呢?有示例代码吗?

c emacs primitive elisp

4
推荐指数
1
解决办法
161
查看次数

随页面滚动的jQuery灯箱插件

我见过的一些JavaScript灯箱效果将灯箱相对于视口定位,因此当您滚动页面时,您仍会看到灯箱.

另一种是相对于页面内容定位的那些.如果您滚动包含其中一个的页面,灯箱将与页面的其余部分一起移动.

我不知道第二种类型的调用是什么(或者是否存在这种行为的术语).

我看过FancyBoxSimpleModal,但据我所知,它们只相对于视口定位.

什么jQuery插件允许与页面滚动的灯箱?

javascript jquery jquery-plugins lightbox

3
推荐指数
1
解决办法
1万
查看次数

在Emacs中自动检测语言

如果我在基本模式下的缓冲区中有一个Python(或任何其他语言)文件,是否有一个命令可以让缓冲区自动检测它应该是什么语言并相应切换?

emacs elisp

3
推荐指数
1
解决办法
804
查看次数

如何在 Apache 中为 HTTP 基本身份验证响应设置 Access-Control-Allow-Origin 标头?

我想使用 XHR 登录到使用 HTTP 基本身份验证的站点。下面的作品就是这样做的。

http = new XMLHttpRequest();
http.open("get", "http://...", false, username, password);
http.send("");
Run Code Online (Sandbox Code Playgroud)

问题是,这并没有从一个域是从一个地方认证是不同的工作。解决方案很简单:将 Access-Control-Allow-Origin 标头设置为 *. 所以我将我的 Apache 配置更改为:

<Location />
    Header set Access-Control-Allow-Origin "*"

    AuthType Basic
    AuthName "trac"
    AuthUserFile /home/admin/development/pass.htpasswd
    Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

该页面的响应如下所示:

HTTP/1.1 401 Authorization Required
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 345
Content-Type: text/html; charset=iso-8859-1
Date: Sun, 11 Sep 2011 01:17:55 GMT
Keep-Alive: timeout=15, max=100
Vary: Accept-Encoding
WWW-Authenticate: Basic realm="trac"
Run Code Online (Sandbox Code Playgroud)

响应没有 Access-Control-Allow-Origin 标头。这看起来很奇怪。

当我对内页使用相同的 Header 指令时,设置了标题。

为什么没有设置标题?如何在 Apache 中为 HTTP 基本身份验证响应设置 Access-Control-Allow-Origin …

apache webserver apache-config basic-authentication

3
推荐指数
1
解决办法
2550
查看次数

无法在 Electron Forge 中使用静态文件

我无法在 Electron 中一致地加载图像。我正在使用 Electron Forge 和 webpack 模板https://www.electronforge.io/templates/webpack-template

\n\n

我的 src 目录如下所示:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 images\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 black.png\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.css\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.html\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 renderer.js\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的 HTML 代码如下所示:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 images\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 black.png\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.css\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.html\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 renderer.js\n
Run Code Online (Sandbox Code Playgroud)\n\n

我用来copy-webpack-plugin复制images目录。

\n\n

当在开发 ( npm run start) 中运行时,开发服务器的根目录是.webpack/renderer这样加载图像的。当在生产中运行时 ( npm run package),HTML 文件正在从文件系统中打开,因此图像标签正在尝试访问.webpack/renderer/main_window/images错误的位置,并且无法加载。

\n\n

我通过执行以下操作使其在开发和生产中都能工作:

\n\n
<img src="images/black.png">\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是一种 hacky 方式,并且与文件存储在 src 目录中的方式不正确。这应该很简单,但我花了几个小时试图弄清楚,但还没有真正的解决方案。

\n\n

我已经看到了这些链接中表达的解决方案,但如果不在路径前面放置“../”,我就无法让它在开发和生产中工作。

\n\n

https://github.com/electron-userland/electron-forge/issues/1196

\n\n

https://github.com/electron-userland/electron-forge/issues/941

\n\n

我可以想出几种方法来解决这个问题: …

webpack electron-forge

3
推荐指数
1
解决办法
1万
查看次数