Angular.js组织是否具有全局变量

时间:2013-04-11 00:27:25

标签: javascript angularjs

我正在研究一个有角度的应用程序,并知道有几种方法来构建它。

第一个是创建一个全局命名空间,例如:

var App = angular.module('app', []);

然后,例如使用控制器,我会这样做:

App.controller('HomeController', ['$scope', function($scope) {

}]);

另一种方法(据我所知)是模块化我的控制器,例如:

angular.module('App', ['home']);

angular.module('home').controller('HomeController', ['$scope', function($scope) {

}]);

另一种方法,如下所示:

angular.module('App'), ['App.controllers']);

angular.module('App.controllers').controller('HomeController', ['$scope', function($scope) {

}]);

这些中的任何一个是否有任何好处,或者是否有适应角度社区的最佳实践或共同风格?

谢谢!

2 个答案:

答案 0 :(得分:2)

所以,在处理了一些我使用过AngularJS的大型项目之后,这里有一些不可思议的事情:

  1. 最终结果显示,您概述的三种方法之间没有区别
  2. 注意2和3,你可能会遇到错误,AngularJS抱怨你没有名为'home'的模块。事实证明,调用angular.module('home')告诉AngularJS查找一个已经创建的名为home的模块。调用angular.module('home', [])告诉它创建一个名为home的新模块。微妙但主要的区别。
  3. 尽管如此,我强烈建议您遵循以后的方法如果您正在研究要在您构建的所有应用程序中重用的组件。比如说,您正在构建一些Web应用程序,并且您已经开发了自己的UI组件,如datepicker,carousel等。现在,既然您不想一次又一次地对它们进行编码,那么您可以将它们放在一个模块中(说“Common.components”)。

    然后,您可以导出将JS文件作为可以包含在所有项目中的库,而无需复制粘贴代码或从巨型应用程序的内容中提取它。

    这为您提供了很好的模块化,可重复使用的部分,可以在各种应用程序中发挥出色。

答案 1 :(得分:1)

我不认为这两种方法都有任何特定的好处。我甚至认为它们之间没有任何区别。截至目前,我还没有意识到任何Angular.js代码风格的“指南”。这是一个可读性和个人品味的问题。 以下是我发现有用的几个链接(Angular docs不完美,礼貌地说):

  1. 8 Tips for Angular.js Beginners
  2. AngularJS Tips and Tricks