Angular:定义模块与否

时间:2016-07-29 00:20:39

标签: javascript angularjs

简单的角度问题。

我应该定义一个角度模块吗?如果我这样或那样做有什么区别?

例如,说var myApp = angular.module('myFirstApp', []);angular.module('myFirstApp', [])之间的区别是什么?

如果我使用第二个选项,我理解我的所有工厂等必须是点链式,对吗?与.factory('myFactory', function() {})中一样。但是,如果我使用第一个选项并定义角度模块,我还必须定义我的工厂等吗?如myApp.factory('myFactory', function() { });

如果我点链(如第二个选项),那么我是否将所有内容添加到应用程序的全局命名空间中?但是在定义模块和添加所有内容之间的区别是什么myApp

请澄清并解释,抱歉这个超级简单的问题,我认为这个问题的答案可以为我提供很多帮助。

谢谢。

编辑:我认为上面的一些问题可以通过以下方式解释:每次使用完整的angular.module()作为getter和全局变量之间的区别是什么?为什么要避免使用全局变量?

3 个答案:

答案 0 :(得分:1)

您无需将角度模块分配给变量。 但你需要像这样定义它。

angular.module('myModule', []);

您的工厂不必一个接一个地链接。您可以将工厂添加到这样的模块中。

angular.module('myModule').factory('myFactory', function() {});

您可以使用angular.module('myModule')获取模块并将控制器,工厂等添加到模块中。

这可以让你把控制器,工厂等等...... 在不同的文件中。

我希望这能引导你朝着正确的方向前进。

答案 1 :(得分:1)

以下是你想知道的关于angularjs的所有内容,但不敢问。 :d

https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md

有很好的做法和解释为什么你应该做一件事,而不是另一件事。

您的答案是单一责任,定义(又名Setters)部分。

答案 2 :(得分:0)

不,他们不必被束缚。这非常简单

angular.module()既是setter又是getter。您提供第二个参数依赖项数组来设置(声明)新模块

没有第二个参数,它是对先前声明的模块的引用。

所以没有链接,你可以这样做:

// declare new module
angular.module('myFirstApp', []);

// add features of module
angular.module('myFirstApp').controller(...;    
angular.module('myFirstApp').directive(...;

这与做:

相同
var app =  angular.module('myFirstApp', []);

app.controller(....
app.directive(....

但是,最佳做法是避免使用全局变量,并且每次使用完整的angular.module()作为getter

它也与使用链接相同

angular.module('myFirstApp', [])
     .controller(....
     .directive(....