Javascript 在优化和非优化版本中初始化requirejs应用程序

Javascript 在优化和非优化版本中初始化requirejs应用程序,javascript,requirejs,amd,r.js,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> 当我构建优化后的脚本

我对我的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
指定为
maincigfile
,所有内容都按照预期构建。但是,当我将脚本标记的
datamain
属性更新到构建产品时,我的应用程序不会初始化

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

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

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

因为r.js使用js/app.js作为其配置文件,优化后的脚本中没有包含该文件


那么,修改传递给
r.js
的构建配置,使
js/app.js
包含在最终优化包中。没有任何东西禁止您在最后一个捆绑包中包含使用
maincigfile
指向的文件。

Aha太棒了!出于某种原因,我认为r.js配置的
compile.options.name
必须引用使用
define()
包装器定义的模块,而应用程序脚本不是
requirejs.config({

baseUrl: 'js',

paths: {
    ...
}

});

require(['init']);