1

我想知道是否值得以这种方式编写 Angular 的东西:

(function(angular, module) {

  'use strict';

  module.controller('MyCtrl', function($scope) {
    // possibly use helperFunction here
  });

  function helperFunction() {
    ...
  }

})(angular, angular.module('myModule'));

或以这种方式(使用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)。正如大多数地方所见,我正在使用“常规”一种(最后一种),但我想知道使用这两种前一种方法是否有任何好处。也许有些特殊情况有用,我不知道。

4

2 回答 2

1

第一种方法的好处是不会污染全局命名空间,从而降低名称冲突的风险。如果您扩展现有项目或您的模块将在多个上下文中使用(例如公共库),这一点尤其重要。

我个人更喜欢第三种风格而不是第二种风格,没有什么特别的原因。有人可能会争辩说优化器更擅长优化非全局代码。

于 2013-10-14T07:55:17.410 回答
0

答案很简单。它是“依赖注入”背后的想法(有关更多信息,请参阅角度文档)。通过使用 Angular 的内置模块,您可以在以后使用这些模块时声明对这些模块的依赖关系。这对于能够进行简单的单元测试至关重要。不在全局命名空间中是问题的一部分,但更大的问题是(在每个后续模块中)您可以声明当前模块依赖的其他模块。

这是一篇不错的文章,详细解释了这个主题:http: //joelhooks.com/blog/2013/08/18/configuring-dependency-injection-in-angularjs/

于 2013-10-14T16:47:48.853 回答