4

我正在使用 RequireJs Optimizer 将所有模块合并到一个文件中 - app.js

在生产中,我有两个 js 文件:app.js 和 require.js

生产 HTML 具有以下脚本标签:

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

这将导致运行时对 js 文件的两次请求。

问题:是否可以将包括所有模块和 require.js 本身在内的所有内容合并到一个文件中,所以我在运行时只有一个请求?

4

2 回答 2

4

答案在这里http://requirejs.org/docs/optimization.html#onejs

我必须通过 'include' r.js 选项包含 require.js。

使用 gulp task 和 gulp-requirejs 它看起来像这样:

requirejs({
   paths: {
      requireLib: 'lib/require'
   },
   include: ['requireLib'],
   out: 'bundle.js'
 })
.pipe(insert.append('require(["app"]);'))

请注意,我必须附加require(["app"])到 js-bundle 的末尾才能启动主模块。

现在我只能在页面上引用“bundle.js”并提出一个请求。

<script type="text/javascript" src="bundle.js"></script>
于 2015-02-06T08:31:28.170 回答
2

AlmondJS听起来很合适,摘自他们的文档:

RequireJS 的替代 AMD 加载程序。它提供了最小的 AMD API 占用空间,包括加载程序插件支持。仅对内置/捆绑的 AMD 模块有用,不进行动态加载。

...

通过在构建文件中包含杏仁,不需要 RequireJS。使用 Closure Compiler 压缩并压缩后,almond 大约为 1 KB。

例如

node r.js -o baseUrl=. name=path/to/almond include=main out=main-built.js wrap=true

将输出如下内容:

(function () {
    //almond will be here
    //main and its nested dependencies will be here
}());

诚然,我没有使用过它,但我听说过它。

于 2015-02-05T10:53:39.427 回答