我正在使用 RequireJs Optimizer 将所有模块合并到一个文件中 - app.js
在生产中,我有两个 js 文件:app.js 和 require.js
生产 HTML 具有以下脚本标签:
<script data-main="app.js" src="require.js"></script>
这将导致运行时对 js 文件的两次请求。
问题:是否可以将包括所有模块和 require.js 本身在内的所有内容合并到一个文件中,所以我在运行时只有一个请求?
我正在使用 RequireJs Optimizer 将所有模块合并到一个文件中 - app.js
在生产中,我有两个 js 文件:app.js 和 require.js
生产 HTML 具有以下脚本标签:
<script data-main="app.js" src="require.js"></script>
这将导致运行时对 js 文件的两次请求。
问题:是否可以将包括所有模块和 require.js 本身在内的所有内容合并到一个文件中,所以我在运行时只有一个请求?
答案在这里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>
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
}());
诚然,我没有使用过它,但我听说过它。