将RequireJS模块压缩成包。

django-compressor-requirejs的Python项目详细描述


用于django-compressor集成的预编译程序 RequireJS-将模块放入bundles

此库不使用r.js压缩器,而是收集 模板中的依赖项并将它们解析为bundle,让django compressor进行压缩。

安装

首先,install django-compressor 进入你的django项目并配置它。然后安装django压缩机要求js:

pip install django-compressor-requirejs

并将requirejs.RequireJSCompiler添加到COMPRESS_PRECOMPILERS设置中:

COMPRESS_PRECOMPILERS = (
    ('text/requirejs', 'requirejs.RequireJSCompiler'),
)

现在,您可以在主RequireJS脚本标记上使用内容类型text/RequireJS:

{% compress js %}
    <script type="text/requirejs" src="{% static "website/js/libs/require.min.js" %}"></script>
{% endcompress %}

默认情况下,库将生成一个包,其中包含模板中找到的所有模块 以及他们的依赖。找不到动态依赖项。它还设置baseUrl 给你的STATIC_URL

如果COMPRESS_ENABLEDFalse,则只添加配置并加载requirejs 模块一个接一个,没有捆绑。

设置

您可以通过三个选项控制需求:

REQUIREJS_PATHS是一个dict,其样式与requirejs路径配置相同。例如 使jquery在主命名空间("jquery": "<some path>/jquery.min")中可用。

REQUIREJS_BUNDLES是一个dict,用于指定将哪些模块捆绑在一起:

REQUIREJS_BUNDLES = {
   'abovethefold': ['website/awesome', 'website/evenmoreawesome'],
}

此设置中未提及的每个模块最终都将位于maincatch all捆绑包中。

REQUIREJS_APP_ALIAS(默认值None)允许静态根目录中的javascript目录由 只是应用程序名。对website/some_module的require/define调用将被搜索为 {{ STATIC_URL }}/website/<alias>/some_module.js如果在{{ STATIC_URL }}/website/中找不到。

发动机罩下

django compressor requirejs使用了requirejs的bundles配置选项,使绑定成为可能 模块在一起,让RequireJS在需要其中一个模块时获取包。其原理是模块 捆绑在一起确实经常一起使用,这降低了浏览器必须执行的请求量。

它在django压缩器中对用于加载requirejs本身的脚本标记使用过滤机制,注入 将配置指向STATIC_URL,如果启用压缩,则指向压缩包。

通过搜索所有模板目录中的requirejs调用并解析它们的 依赖关系。这是纯文本搜索,没有真正的javascript或html解析(类似于makemessages)。 然后对找到的所有模块进行类似的依赖性扫描。

由于未进行分析或计算,因此不支持使用变量动态加载依赖项。如果你 要让django compressor requirejs接收它,请使用所有选项(如果可行,为 当然)。

因此存在django需求和压缩子集jjs。< /H2>

是的,他们有;如果你想用R.JS压缩器和Django压缩器,请 看看compressor_requirejs。如果你不使用 Django压缩机,参观Etianen的django-require

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何修复:线程“main”java中的异常。java中随机数布尔数组的lang.ArrayIndexOutOfBoundsException   如何在Java中向字符串数组添加字符串?   java扫描器useDelimiter字符串参数?   java如何读取包含子类实例的对象的可包裹对象数组?   java Checkstyle RegexpHeader未正确检测正则表达式   比较Java中的两个XML树   java试图调用虚拟方法“int安卓”。看法看法对空对象引用执行getVisibility()   java错误的解析日期   用于双向I/O的io Java数据对象   gradle执行失败的Twilio SMS(Java)   java代码抛出严重错误:没有为参数1异常指定值   安卓 java。调用getDrawable()时lang.OutOfMemoryError   java如何将可滚动的JPanel保存为jpeg图像(而不是快照)   java bufferedReader现在需要10多秒才能完成(Kotlin)   java在线读取文本文件中的数字   关于访问说明符的java   在java中的incrementAndGet()实现中,原子将`getIntVolatile(Object var1,long var2)`替换为`getInt(Object var1,long var2)`