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

requireJS optimizer does not include nested require calls

本文关键字:require 调用 嵌套 不包括 优化 requireJS      更新时间:2024-03-16

我已经阅读优化器文档很长一段时间了,但似乎我不明白。文档说:

优化器将只组合数组中指定的模块传递到顶级的字符串文字的请求和定义调用,或简化中的require('name')字符串文字调用CommonJS包装。因此,它将找不到通过变量名:

到目前为止还好。这基本上意味着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插件会被加载,它最终会执行回调,但这里的结构本身似乎阻止了优化器完成它的工作。

问题

  • 如果我只列出"Top require call"中的所有模块,r.js是否还包括+将嵌套和嵌套模块中的所有顶部requiredefine调用链接到主应用程序文件中?

  • 他们在文档中提到了r.jsinclude选项。它在这里有意义吗?如果有,如何正确调用它?

当然,您不希望以后失去延迟加载模块的选项,但对于这种依赖关系(等待DOMContentLoaded),我希望有一种解决方法。

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

findNestedDependencies: true

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