requireJs 构建脚本
题
我有如下代码
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 包括
- 初始依赖
- 模块A
ModuleB.built.js 包括
- 其他依赖
- 模块B
我不希望它们全部位于同一个文件中,但是因为 ModuleB 可能永远不会被加载。
我可以为这两个模块编写一个构建脚本,但这将非常耗时,因为我的项目中有相当多的模块,并且希望有一个构建脚本可以一次构建很多模块。
创建用于构建这两个模块(以及遵循相同依赖模式的更多模块)的构建脚本时,我需要知道什么?
解决方案
为了实现这一点,你必须玩 modules
配置选项。
它可能看起来像这样:
{
modules: [
{
name: "ModuleA",
include: [],
exclude: []
},
{
name: "ModuleB",
exclude: [
"moduleA"
]
}
]
}
James 这里有一个类似的示例设置: https://github.com/requirejs/example-multipage
当然,通过单独构建这些模块,您最终可能需要更新路径。如果是这样,最好的方法是创建一个包含 require.config
为您构建的应用程序使用特殊设置进行调用,并包含此配置而不是通常的配置。但是,如果您以良好的分离方式设置依赖关系,那么您可能会没事。通过“良好分离”的方式,我的意思是如果 moduleA
是基本脚本,那么它不应该包含依赖项 moduleB
- 但我想这是常识!
关于匀场模块的注意事项:由于 shimmed 配置仅在文件加载时以及通过 r.js 订购插件时起作用,因此如果您不能 100% 确定之前会加载这些文件,请确保不要包含没有依赖项的 shim 模块。更多信息请点击这里: https://github.com/requirejs/example-multipage-shim
希望这有帮助!