【发布时间】:2014-04-30 01:21:33
【问题描述】:
在使用 AngularJS 处理大型项目时,我发现我喜欢按功能组织代码。
这意味着当我有一些可识别的功能 X(特别是如果它是可重用的)时,我会创建目录 X 并将所有控制器、服务和属于该功能的其他部分放入其中。我还声明了一个名为 X 的新模块,并将目录 X 中的所有内容分配给该模块。
目录结构将如下所示:
scripts/
app.js
controllers/
services/
directives/
filters/
X/
controllers/
services/
directives/
filters/
在app.js中有一个主模块声明:
angular.module('myApp', ['X']);
X/ 中的所有控制器等都属于模块“X”,这意味着我在这些文件中像这样获取模块“X”:
var X = angular.module('X');
我不知道在哪里声明模块“X”?
我的一些想法:
- 我可以在其中一个控制器/服务/...中声明它并在其他控制器等中获取它,但这听起来不对,因为我看不到任何逻辑如何选择该控制器/服务/...除其他外,我还必须注意在其他人之前将其包含在 index.html 中。我觉得这个想法不好。
- 我可以在 app.js 中声明,所以 app.js 现在看起来像
angular.module('myApp', ['X']); angular.module('X', [/*some dependencies could go here*/]);
我发现这个想法比前一个想法更好,但是我不喜欢那个模块声明在目录 X 之外。 - 在目录 X/ 我创建文件 main.js 并将模块 X 的声明放入其中。在目录 X/ 中的其他文件之前,我必须小心将此文件包含在 index.html 中。
我喜欢这个最好的解决方案。
有没有更好的方法来做到这一点?
【问题讨论】:
标签: javascript angularjs angularjs-module