我正在使用RequireJs Optimizer将所有模块合并到一个文件中 - app.js
在制作时我有两个js文件:app.js和require.js
生产HTML具有以下脚本标记:
<script data-main="app.js" src="require.js"></script>
这将在运行时导致两个js文件请求。
问题:是否可以将包括所有模块和require.js本身在内的所有内容合并到一个文件中,因此我在运行时只有一个请求?
答案 0 :(得分:3)
答案在http://requirejs.org/docs/optimization.html#onejs
我必须包括require.js通过&#39; include&#39; r.js选项。
使用gulp任务和gulp-requirejs,它看起来像这样:
requirejs({
paths: {
requireLib: 'lib/require'
},
include: ['requireLib'],
out: 'bundle.js'
})
.pipe(insert.append('require(["app"]);'))
注意我必须将require(["app"])
附加到js-bundle的末尾才能启动主模块。
现在我只能参考&#39; bundle.js&#39;在页面上有一个请求。
<script type="text/javascript" src="bundle.js"></script>
答案 1 :(得分:2)
AlmondJS听起来很合适,从他们的文档中摘录:
RequireJS的替代AMD加载程序。它提供了最小的AMD API 足迹包括加载程序插件支持。只对有用 内置/捆绑的AMD模块,不进行动态加载。
...
通过在构建文件中包含杏仁,不需要RequireJS。 使用Closure Compiler和缩小时,杏仁约为1千字节 gzip压缩。
例如
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
}());
不可否认,我没有使用它,但我已经听说过了。