2

我了解到dojo的加载器可以加载非amd脚本,太棒了。我们有一个供应商提供的脚本,它需要在加载脚本之前设置某些全局变量。如果,在我的 AMD 模块中,我设置了全局变量(我知道,糟糕,对吗?)然后 require(["/vendor/script.js"]),一切都很好。

我无法找到答案的一件事是构建过程是否会看到这个 require 调用并将“/vendor/script.js”添加到依赖项列表并构建它。如果我理解正确,这将导致脚本在我的模块有机会设置所需的全局变量之前触发。

谁能告诉我?

4

2 回答 2

4

默认行为是构建将遍历依赖项并将它们包含在构建中。但是,您有以下选择:

1) 在配置文件中,您可以指定排除项。这些不会包含在构建中。

// profile.js used by the build

layers: {
    "myApp/myApp": {
        include:    [...],
        exclude:    [vendor/script.js]
}

2)不要在define语句中包含依赖关系,并在模块后面使用require。 dojo/fx这样做dojo/fx/toggler

// myCustomWidget.js

define([], function() {
    // the require function won't be called by the build
    // and the vendorScript won't be pulled into the build.
    require(["vendor/script"], function(vendorScript) {

    });
});
于 2013-01-31T15:06:25.137 回答
0

我要做的是创建另一个脚本来设置你的全局变量,然后在包含你编译的 .js 文件之前包含它。

但是,如果您将全局变量设置为需要模块的值,我想您可以在编译后的 .JS 文件构建后对其进行编辑。

于 2013-04-22T19:11:13.740 回答