我有如下代码

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

希望这有帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top