requireJS优化器不包含嵌套的require调用

时间:2012-07-26 15:58:31

标签: javascript requirejs

我正在阅读优化器文档很长一段时间,但似乎我无法理解它。医生说:

  

优化器只会组合数组中指定的模块   传递给顶级需求和定义的字符串文字   调用,或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.jstools.js链接到其中来创建该文件。是否有任何好的方法/解决方法告诉优化器,它还应链接此示例中的window.jsheader.jscontent.js文件?

当然,这个实例中的domReady插件会被加载,最终会执行回调,但看起来这里的结构本身会阻止优化器完成它的工作。

问题

  • 如果我只是列出“热门需求电话”中的所有模块, r.js 还会包含+链接所有热门requiredefine来电从嵌套和嵌套嵌套模块到 main-app 文件?

  • 他们在文档中提到 r.js include 选项。这是否有意义,如果是,如何正确调用它?

当然你不想在以后丢失延迟加载模块的选项,但是对于这种依赖(等待DOMContentLoaded),我希望有办法解决这个问题。

1 个答案:

答案 0 :(得分:46)

默认情况下,RequireJS不会扫描嵌套的require调用,因为它假定这些调用是为了在运行时加载依赖项。您可以通过设置

来覆盖它
findNestedDependencies: true

在您的优化配置中。希望有所帮助。