2

我有如下代码

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 可能永远不会被加载。

我可以为这两个模块编写一个构建脚本,但这会很耗时,因为我的项目中有很多模块,并且想要一个构建脚本来一次构建很多模块。

我需要知道什么来创建构建脚本来构建这两个模块(以及更多遵循相同依赖模式的模块)?

4

1 回答 1

1

为此,您必须使用modules配置选项。

它可能看起来像这样:

{
    modules: [
        {
            name: "ModuleA",
            include: [],
            exclude: []
        },
        {
            name: "ModuleB",
            exclude: [
                "moduleA"
            ]
        }
    ]
}

詹姆斯在这里有一个类似的示例设置:https ://github.com/requirejs/example-multipage

当然,通过单独构建这些模块,您最终可能需要更新路径。如果是这样,那么最好的方法是创建一个文件,其中包含require.config为您构建的应用程序具有特殊设置的调用,并包含此配置而不是您通常的配置。但是如果你以一种很好的分离方式设置依赖关系,那么你可能会没事的。通过“良好分离”的方式,我的意思是如果moduleA是基本脚本,那么它不应该包含依赖项moduleB- 但我想这是常识!

关于 shimmed 模块的注意事项:由于 shimmed 配置仅在加载文件时起作用,并且通过 r.js 来订购插件,如果您不是 100% 确定这些将在之前加载,请确保您不包含没有依赖关系的 shim 模块。更多信息:https ://github.com/requirejs/example-multipage-shim

希望这有帮助!

于 2012-10-11T02:08:50.673 回答