【问题标题】:How to optimize a subset of JavaScript files created as RequireJS modules如何优化创建为 RequireJS 模块的 JavaScript 文件子集
【发布时间】:2014-07-09 15:51:21
【问题描述】:

我有一个单页 Web 应用程序,它使用 RequireJS 来组织和构造 JavaScript 代码。 在应用程序中,我有一些 JS 文件我想使用 r.js 进行优化,因为它们属于将由我的客户使用的 API。所以,我只想优化这些文件并保持其余代码不变。

这是我的应用程序结构:

  • 应用程序
    • main.js
    • 许多其他文件和文件夹
  • 脚本
    • 我的API
      • app.js
      • 许多其他文件和文件夹
    • require.js
    • jquery.js
    • build.js
  • index.htm

所有的 JavaScript 代码都位于 appscripts 文件夹下。正如我之前提到的,所有这些文件都被定义为 RequireJS 模块。这就是 main.js 现在的样子:

require.config({
    baseUrl: 'scripts',
    paths: {
        base: 'myAPI/base',
        proxy: 'myAPI/proxyObject',
        localization: 'myAPI/localization',
        app: '../app',
    }

});
require(['myAPI/app'],
    function (app) {
        //app.init....
    }
);

如您所见,在 paths 配置中,我定义了一些指向 myAPI(我要优化的文件夹)的别名。

这是我从 index.htm 文件中引用 RequireJS 的方式:

<script data-main="app/main" src="scripts/require.js"></script>

这是我为 r.js (scripts/build.js) 创建的构建文件:

({
   baseUrl: '.',
   out: 'build/myAPI.js',

   name: 'myAPI/app',
   include: ['some modules'],
   excludeShallow: ['some modules defined in the app folder'],

   mainConfigFile: '../app/main.js',
   optimize: 'uglify2',
   optimizeCss: 'none'
})

生成了优化的文件,但我在尝试使用它时遇到了一些挑战

  1. 如何从应用中引用该文件?
  2. 现在对 myAPI 模块的依赖关系已损坏。 RequireJS 没有找到 myAPI 中定义的模块。
  3. 我可以做些什么来保持 require.config.paths 中定义的别名正常工作?

您能帮我就这种情况提出一些建议或反馈吗?

谢谢!!

【问题讨论】:

    标签: javascript requirejs r.js


    【解决方案1】:

    经过研究,我可以解决我的问题。我的解决方案基于 James Burke 创建的这个 Github 项目:https://github.com/requirejs/example-libglobal

    首先,我必须删除对 myAPI 单个模块的所有依赖项,并创建一个集中访问任何内部依赖项的对象。然后,我创建了一个 r.js 脚本来为 myAPI 生成一个文件。该文件将被其他 JS 文件使用。正如 James Burke 在 Github 项目中所展示的那样,该单个文件可以作为全局对象或 AMD 模块来引用。

    require.config.paths 中定义的别名不再需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      相关资源
      最近更新 更多