【问题标题】:RequireJS loading unoptimized filesRequireJS 加载未优化的文件
【发布时间】:2014-05-01 22:47:13
【问题描述】:

我已成功优化我的项目:

main.js
----------------
main.js
lib/jquery/jquery.js
lib/underscore/underscore-min.js
lib/aura/base.js
lib/aura/core.js
etc...

login.js
----------------
models/page.js
models/user.js
helpers/permissions.js
helpers/pager.js
login.js
etc...

由于某种原因,当我加载登录页面时...它仍然会跟踪公共文件 (main.js) 中已包含的依赖项。所以,我对 jquery、下划线等有个别要求。

我像这样使用multi-page shim example

require(['main'], function (main) { require(['login']) });

任何想法为什么不使用公共模块来查找这些依赖项?

【问题讨论】:

    标签: javascript optimization dependency-injection coffeescript requirejs


    【解决方案1】:

    在使用 RequireJS 的 Play Framework 项目中,我一直在与同样的奇怪行为作斗争。问题的原因是顶级模块调用require 并提供了不正确的模块名称。不幸的是,RequireJS 可能会加载这个不正确的模块名称,并导致整个过程进入错误的依赖关系图,最后我对每个文件都有单独的请求。

    我猜这只是 Play Framework 项目的潜在错误,因为所有单独的 JavaScript 文件实际上都是部署的一部分(当您不更改构建配置时),而不仅仅是单个(或在某些情况下是多个)优化的那些已经内联了所有需要的东西。

    另一方面,我也玩过https://github.com/requirejs/example-multipage-shim,对我来说它开箱即用。当使用 www-built 文件夹中的输出时,RequireJS 实际上只会执行两个 HTTP 请求来获取所需的内容。

    对于看到此问题的任何人,我建议查看 RequireJS 优化器的输出并查看 RequireJS 模块的名称(即 define 调用中潜在依赖项前面的字符串参数)。您可以通过为 UglifyJS 启用代码美化来使优化器输出更具可读性,请查看 https://github.com/jrburke/r.js/blob/master/build/example.build.js#L155 了解配置设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      相关资源
      最近更新 更多