我想知道是否值得以这种方式写角度的东西:
(function(angular, module) {
'use strict';
module.controller('MyCtrl', function($scope) {
// possibly use helperFunction here
});
function helperFunction() {
...
}
})(angular, angular.module('myModule'));
或这种方式(使用App
对象并将app内容放入其中:
App = App || {};
App.myModule = App.myModule || angular.module('myModule', []);
App.myModule.controller('MyCtrl', function($scope) {
'use strict'
// possibly use helperFunction here
function helperFunction() {
...
}
});
比使用这样的常规方式
angular.module('myModule').controller('MyCtrl', function($scope) {
'use strict'
// possibly use helperFunction here
function helperFunction() {
...
}
});
这是我想到的构建应用程序代码的三种可能方式(不包括requirejs)。我在大多数地方都使用“常规”(最后一个),但我想知道使用这两种前方法是否有任何好处。也许在有特殊情况时,我不知道。
答案 0 :(得分:1)
第一种方法的好处是不会污染全局命名空间,从而降低了名称冲突的风险。如果您扩展现有项目或者您的模块将在多个上下文中使用(例如公共库),这一点尤其重要。
我个人更喜欢第二种风格,而不是特别的原因。有人可能会说优化器更擅长优化非全局代码。
答案 1 :(得分:0)
答案很简单。它是“依赖注入”背后的理念(更多信息见angular docs)。通过使用Angular的内置模块,您可以在以后使用它们时声明对这些模块的依赖关系。这对于能够进行简单的单元测试至关重要。不在全局命名空间中是问题的一部分,但更大的问题是(在每个后续模块中)您可以声明当前模块所依赖的其他模块。
这是一篇不错的文章,详细解释了这个主题:http://joelhooks.com/blog/2013/08/18/configuring-dependency-injection-in-angularjs/