我的代码如下
define("ModuleA", ["InitialDependency"], function (initDep){
return {};
});
define("ModuleB", ["ModuleA", "OtherDependency"], function (moduleA, otherDep){
return {};
});
每个模块都在单独的文件“ModuleA.js”,“Moduleb.js”,“InitialDependency.js”和“OtherDependency.js”中定义。
这些模块在我的应用程序中按顺序加载。 ModuleB始终在ModuleA之后加载。这意味着在优化阶段我不希望ModuleA的脚本组合在ModuleB的构建脚本中。我想要以下
ModuleA.built.js包括
ModuleB.built.js包括
我不希望它们都在同一个文件中,但是可能永远不会加载ModuleB。
我可以为这两个模块做一个构建脚本,但这很费时,因为我的项目中有很多模块,并希望一个构建脚本能够同时构建它们。
创建用于构建这两个模块的构建脚本(以及遵循相同依赖模式的更多模块),我需要了解什么?
答案 0 :(得分:1)
要实现这一点,您必须使用modules
配置选项。
看起来像这样:
{
modules: [
{
name: "ModuleA",
include: [],
exclude: []
},
{
name: "ModuleB",
exclude: [
"moduleA"
]
}
]
}
詹姆斯在这里设置了类似的示例:https://github.com/requirejs/example-multipage
当然,通过单独构建这些模块,您可能最终需要更新路径。如果是这样,那么最好的方法是创建一个包含require.config
调用的文件,其中包含针对您构建的应用程序的特殊设置,并包括此配置而不是您通常的配置。但是如果你以一种很好的分离方式设置依赖关系,那么你可能会没事的。通过“良好分离”的方式,我的意思是如果moduleA
是基本脚本,那么它不应该包含moduleB
的依赖项 - 但我想这是常识!
关于填充模块的注意事项:由于shimmed配置仅在加载文件和r.js订购插件时工作,请确保在没有依赖的情况下不包含填充模块,如果你是不是100%肯定这些将在之前加载。更多信息:https://github.com/requirejs/example-multipage-shim
希望这有帮助!