在优化和非优化构建中初始化需求应用



我对我的rjs优化脚本感到困惑。我想我的问题的答案在文档中,但我想我看得太久了,快看不见了。

我的应用程序的目录结构是这样的

-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中,非优化版本从未初始化。如果我在两个文件中都包含调用,我会得到一个错误。

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

因为r.js使用js/app.js作为它的配置文件,没有被包含在优化的脚本

那么,修改您传递给r.js的构建配置,以便js/app.js 包含在最终优化的包中。没有什么可以禁止您在最终包中包含使用mainConfigFile指向的文件。

最新更新