我们想创建一个应用程序布局,该布局由一个需要包的主模块组成。每个包(包括主模块)对第三方库和其他本地包都有自己的依赖关系。因此,在每个包的 main.js 中,我们都有一个 require.config 部分,如下所示:
require.config({
packages: ["package2"],
context: 'package1',
shim: {
'underscore': {
exports: '_'
}
},
paths: {
underscore: '../lib/underscore-1.4.3'
}
});
如您所见,配置定义了路径和包。顶层 main.js 如下所示:
require.config({
packages: ["package1"]
});
该项目具有这样的目录结构......
├── package1
│ ├── package1.jade
│ ├── package1.js
│ └── main.js
├── lib
│ ├── backbone-0.9.10.js
│ └── underscore-1.4.3.js
├── package2
│ ├── package2.js
│ ├── main.js
└── main.js
目标是我们可以拥有一组“包”,包和页面不仅可以依赖于模块。在完美的工作中,项目的依赖关系图看起来像这样:
+------------+ +-------------+
| package1 +--+ +--+ package2 +--+
+------------+ | | +-------------+ |
| | |
v v v
+--------------+ +--------------+
| package3 | | package4 |
+----------+---+ +--------------+
|
| +-------------+
+------------>| common |
+-------------+
在每个包内部,我们也会有一个项目结构。为我们的 JS 创建模块化架构。require.js 和它的包可以实现这种风格,还是我们对包的考虑是错误的?如果是这样,是否有一个 js 依赖管理库可以帮助我们完成这个架构?
我们在 github 上拼凑了一个示例结构,https://github.com/austinbv/require_js_package_sample
最后,我们在要求邮件列表https://groups.google.com/forum/?fromgroups=#!topic/requirejs/bNj4mXNWq-8上提出了同样的问题,但没有看到太多的兴趣,所以我们来到了这里。如果列表更新,我一定会更新我的问题。