想象一下这个项目的脚手架:
- 实用程序.js
- 模块1/controllers.js
- 模块1/services.js
- 模块2/controllers.js
- 模块2/services.js
实用程序.js
define([], function(){ /* My utils functions */ });
模块1/controllers.js
define(['../utils'], function(utils){ /* Module1 stuff */ });
模块2/controllers.js
define(['../utils'], function(utils){ /* Module2 stuff */ });
这在非优化上下文中非常有效,因为 utils.js 只下载一次,无论是来自模块 1 还是模块 2。但是我需要优化每个模块并将其打包在一个 JS 文件中。
为了得到这个,我在每个模块中添加了一个 main.js 文件,例如:
模块1/main.js
define(['./controllers', './services.js'], function(){});
现在我开始玩优化工具,这是我的 app.build.js
...
modules: [
{ name: "module1/main" },
{ name: "module2/main" },
]
...
好的,我得到了我想要的行为,但我看到这两个模块都包含 utils.js 代码。这种行为是正确的,因为您无法保证加载顺序。
所以,这些是我的问题:
- 是否存在任何智能解决方案?
- 如果不能跳过,有人知道 requirejs 是如何工作的吗?这种策略会产生任何问题吗?