我了解到dojo的加载器可以加载非amd脚本,太棒了。我们有一个供应商提供的脚本,它需要在加载脚本之前设置某些全局变量。如果,在我的 AMD 模块中,我设置了全局变量(我知道,糟糕,对吗?)然后 require(["/vendor/script.js"]),一切都很好。
我无法找到答案的一件事是构建过程是否会看到这个 require 调用并将“/vendor/script.js”添加到依赖项列表并构建它。如果我理解正确,这将导致脚本在我的模块有机会设置所需的全局变量之前触发。
谁能告诉我?
我了解到dojo的加载器可以加载非amd脚本,太棒了。我们有一个供应商提供的脚本,它需要在加载脚本之前设置某些全局变量。如果,在我的 AMD 模块中,我设置了全局变量(我知道,糟糕,对吗?)然后 require(["/vendor/script.js"]),一切都很好。
我无法找到答案的一件事是构建过程是否会看到这个 require 调用并将“/vendor/script.js”添加到依赖项列表并构建它。如果我理解正确,这将导致脚本在我的模块有机会设置所需的全局变量之前触发。
谁能告诉我?
默认行为是构建将遍历依赖项并将它们包含在构建中。但是,您有以下选择:
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) {
});
});
我要做的是创建另一个脚本来设置你的全局变量,然后在包含你编译的 .js 文件之前包含它。
但是,如果您将全局变量设置为需要模块的值,我想您可以在编译后的 .JS 文件构建后对其进行编辑。