将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_ENABLED是False,则只添加配置并加载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。