我可以将 RequireJs 模块和 require.js 本身组合成一个 js-bundle
Can I combine RequireJs modules AND require.js itself into one js-bundle
我正在使用 RequireJs Optimizer 将所有模块合并到一个文件中 - app.js
在生产环境中我有两个 js 文件:app.js 和 require.js
生产 HTML 具有以下脚本标记:
<script data-main="app.js" src="require.js"></script>
当运行.
时,这将导致两次请求js文件
问题:是否可以将所有模块和require.js本身全部合并到一个文件中,所以我只有一个请求时运行 ?
AlmondJS 听起来很合适,来自他们文档的片段:
A replacement AMD loader for RequireJS. It provides a minimal AMD API
footprint that includes loader plugin support. Only useful for
built/bundled AMD modules, does not do dynamic loading.
...
By including almond in the built file, there is no need for RequireJS.
almond is around 1 kilobyte when minified with Closure Compiler and
gzipped.
例如
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
}());
诚然我没有用过它,但我听说过它。
答案在这里http://requirejs.org/docs/optimization.html#onejs
我必须通过 'include' r.js 选项包含 require.js。
使用 gulp 任务和 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>
我正在使用 RequireJs Optimizer 将所有模块合并到一个文件中 - app.js
在生产环境中我有两个 js 文件:app.js 和 require.js
生产 HTML 具有以下脚本标记:
<script data-main="app.js" src="require.js"></script>
当运行.
时,这将导致两次请求js文件问题:是否可以将所有模块和require.js本身全部合并到一个文件中,所以我只有一个请求时运行 ?
AlmondJS 听起来很合适,来自他们文档的片段:
A replacement AMD loader for RequireJS. It provides a minimal AMD API footprint that includes loader plugin support. Only useful for built/bundled AMD modules, does not do dynamic loading.
...
By including almond in the built file, there is no need for RequireJS. almond is around 1 kilobyte when minified with Closure Compiler and gzipped.
例如
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
}());
诚然我没有用过它,但我听说过它。
答案在这里http://requirejs.org/docs/optimization.html#onejs
我必须通过 'include' r.js 选项包含 require.js。
使用 gulp 任务和 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>