在优化和非优化构建中初始化requirejs app

时间:2014-03-11 06:19:00

标签: javascript requirejs amd r.js

我对我的r.js优化脚本感到困惑。我想我的问题的答案是在文档中,但我认为我会因为长时间盯着文档而盲目。

我的应用程序有一个像这样的目录结构

-index.htm
-js/app.js
-js/init.js
-js/appname/*.js

当处于非优化模式时,index.htm包含以下行:

<script type="text/javascript" data-main="js/app" src="js/lib/require-2.1.11.js"></script>

一切正常。我的删节js/app.js脚本如下所示:

requirejs.config({

baseUrl: 'js',

paths: {
    ...
}

});

require(['init']);

当我构建优化脚本时,我将js/app.js指定为mainConfigFile,并且所有内容都按预期构建。但是,当我将脚本标记的data-main属性更新为构建产品时,我的应用程序并未初始化。

如果我在控制台中手动执行require(['init']),它会按预期启动。因为r.js使用js/app.js作为配置文件而未包含在优化脚本中,这意味着我的require(['init'])也不会被包含在内。

我认为我可以通过将require(['init'])移动到js/init.js的末尾来解决此问题,这确实可以修复优化的构建(按预期初始化),但现在调用不在js/app.js非优化版本永远不会初始化。如果我在两个文件中包含调用,我会收到错误。

在加载优化或非优化文件后,如何确保我的第一个模块是必需的?在我的第一个模块的依赖项已经完全加载后,我不明白我应该如何进行第一次调用。

1 个答案:

答案 0 :(得分:1)

  

因为r.js使用js / app.js作为配置文件而未包含在优化脚本中

好吧,然后修改您传递给r.js的构建配置,以便在最终优化的捆绑包中包含js/app.js 。没有任何内容禁止您在最终捆绑中包含您使用mainConfigFile指向的文件。