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

Javascript Angular.js组织是否具有全局变量,javascript,angularjs,Javascript,Angularjs,我正在开发一个angular应用程序,我知道有几种方法可以构建它 第一种方法是创建一个全局命名空间,例如: var App = angular.module('app', []); 然后,例如,对于控制器,我将执行以下操作: App.controller('HomeController', ['$scope', function($scope) { }]); 另一种方法(据我所知)是模块化我的控制器,例如: angular.module('App', ['home']); angular

我正在开发一个angular应用程序,我知道有几种方法可以构建它

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

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) {

}]);
这些都有什么好处吗?或者在angular社区中有没有最佳实践或通用风格


谢谢大家!

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


  • 因此,在处理了一些我使用AngularJS的大型项目之后,这里是我头脑中的一些事情:

  • 就最终结果而言,您概述的三种方法之间没有区别
  • 注意2和3,AngularJS抱怨您没有名为“home”的模块时,您可能会遇到错误。结果是,调用
    angular.module('home')
    告诉AngularJS查找一个已经创建的名为home的模块。调用angular.module('home',[])告诉它创建一个名为home的新模块。细微但重大的区别
  • 也就是说,如果您正在开发要在所构建的所有应用程序中重用的组件,我强烈建议您采用后一种方法。例如,您正在构建一些web应用程序,并且您已经开发了自己的UI组件,如datepicker、carousel等。现在,由于您不想反复编写它们,因此您可以将它们放在模块中(例如“Common.components”)

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


    这为您提供了良好的模块化、可重复使用的功能,可以在各种应用程序中发挥出色的作用。

    我认为这是个人选择的问题。在我的例子中,我更喜欢使用第三种方式,因此我有一个模块用于我的应用程序、控制器、服务、指令、过滤器等。。。如果你想在其他应用程序中重用某些部分,它可能会很有用。@dave在这里你可以找到一些AngularJS指南对我来说很有意义。非常感谢。