我正在阅读优化器文档很长一段时间,但似乎我无法理解它。医生说:
优化器只会组合数组中指定的模块 传递给顶级需求和定义的字符串文字 调用,或require('name')字符串文字调用的简化 CommonJS包装。因此,它不会找到通过a加载的模块 变量名称:
好到目前为止一切顺利。这基本上意味着 r.js 不会包含也不会抓取嵌套的依赖项。现在假设我们有一个“主应用程序”文件,如下所示:
require([ 'es5shim', 'tools' ], function() {
console.log('fictive app entry point');
require([ 'domready!' ], function( doc ) {
console.log('domReady, loading GUI modules...');
require([ 'GUI/window', 'GUI/header', 'GUI/content' ]);
});
});
我想问题在这里变得非常明显。 r.js (优化程序)仅通过将es5shim.js
和tools.js
链接到其中来创建该文件。是否有任何好的方法/解决方法告诉优化器,它还应链接此示例中的window.js
,header.js
和content.js
文件?
当然,这个实例中的domReady
插件会被加载,最终会执行回调,但看起来这里的结构本身会阻止优化器完成它的工作。
问题:
如果我只是列出“热门需求电话”中的所有模块, r.js 还会包含+链接所有热门require
和define
来电从嵌套和嵌套嵌套模块到 main-app 文件?
他们在文档中提到 r.js 的 include 选项。这是否有意义,如果是,如何正确调用它?
当然你不想在以后丢失延迟加载模块的选项,但是对于这种依赖(等待DOMContentLoaded),我希望有办法解决这个问题。
答案 0 :(得分:46)
默认情况下,RequireJS不会扫描嵌套的require调用,因为它假定这些调用是为了在运行时加载依赖项。您可以通过设置
来覆盖它findNestedDependencies: true
在您的优化配置中。希望有所帮助。