我在 moduleA 中有一个函数,必须在加载 moduleB 之前运行。ModuleA 不依赖于任何其他模块,而 moduleB 有一些依赖项(例如 moduleC)。以下代码在未优化时可以正常工作:
主配置.js
require.config({
paths: {
moduleA: 'modules/moduleA',
moduleB: "modules/moduleB",
moduleC: "modules/moduleC",
}
});
require(['moduleA'], function (moduleA) {
moduleA.init(function () {
require(['moduleB'], function (moduleB) {
moduleB.start();
});
});
});
但是,当使用 r.js 对其进行优化时,事情变得一团糟。r.js 优化器的输出是:
Tracing dependencies for: ../scripts/main-config
Uglifying file: C:/.../scripts/main-config.js
C:/.../scripts/main-config.js
----------------
C:/.../scripts/libs/require/require.js
C:/.../scripts/modules/moduleA.js
C:/.../scripts/main-config.js
这意味着只有 3 个模块 - require、moduleA 和 main-config - 一起被 uglified 为 1 个最小化文件。输出文件中缺少 moduleB 的所有依赖项(例如 moduleC)。
将配置文件更改为以下内容,将在输出文件中包含 moduleB 的所有依赖项,但它不会得到所需的结果,因为它在 moduleA 的 init 函数之前解析 moduleB:
require(['moduleA','moduleB'], function (moduleA, moduleB) {
moduleA.init(function () {
moduleB.start();
});
});
我希望稍后解析 moduleB,仅在 moduleA 的 init 函数之后(moduleB 包含一些立即函数)。
如何让所有依赖树包含在结果文件中,但具有我需要的行为(在 moduleA 的函数完成后解析并运行 moduleB)?谢谢。