Javascript 在优化和非优化版本中初始化requirejs应用程序
我对我的r.js优化脚本感到困惑。我想我的问题的答案在文档中,但我想我盯着它看太久会瞎了 我的应用程序的目录结构如下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> 当我构建优化后的脚本
-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']);