【问题标题】:Can I combine RequireJs modules AND require.js itself into one js-bundle我可以将 RequireJs 模块和 require.js 本身组合成一个 js-bundle
【发布时间】:2015-04-05 04:36:58
【问题描述】:

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

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

生产 HTML 有以下脚本标签:

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

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

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

【问题讨论】:

标签: javascript requirejs requirejs-optimizer


【解决方案1】:

答案在这里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>

【讨论】:

    【解决方案2】:

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

    RequireJS 的替代 AMD 加载程序。它提供了一个最小的 AMD API 包括加载器插件支持的足迹。只对有用 内置/捆绑的 AMD 模块,不进行动态加载。

    ...

    通过在构建文件中包含 almond,不需要 RequireJS。 当使用 Closure Compiler 和 压缩包。

    例如

    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
    }());
    

    诚然我没用过,但我听说过。

    【讨论】:

    • 感谢您的建议,但我认为 RequireJs Optimizer 只需通过“包含”选项添加 require.js 库即可。我花了一些时间阅读 AlmondJS 文档,它看起来很可爱。我决定稍后再做。
    猜你喜欢
    • 1970-01-01
    • 2013-03-21
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2020-06-24
    • 1970-01-01
    • 2021-05-26
    相关资源
    最近更新 更多