我观察到在AngularSeed中,一些控制器具有以下格式:
angular.module('myApp.controllers', []).
controller('MyCtrl1', [function() {
}])
.controller('MyCtrl2', [function() {
}]);
然而,某些控制器具有以下语法:
var myApp = angular.module('myApp',[]);
myApp.controller('MyCtrl1', ['$scope', function($scope) {
} }]);
myApp.controller('MyCtrl2', ['$scope', function($scope) {
} }]);
这对于生产项目来说是一个好习惯吗? 此外,这两种方法之间是否有任何性能差异?
答案 0 :(得分:1)
这两种语法中的性能没有差异。 但建议我们使用第二种方法。
请记住,angular.module()返回一个模块对象。这将暴露控制器,过滤器,服务和指令注册的功能。 现在这些函数中的每一个都将返回相同的模块,因此我们讨论相同的参考。这类似于构建器模式。
根据Angular Best Practice for App Structure(公共),建议不要多次调用angular.module(),其他文件和模块不应修改相同的内容。 因此,建议使用后者。
逻辑很简单: 将您的模块公开为全局变量,并让其他文件添加到该变量。
答案 1 :(得分:1)
如果您的项目非常大,我建议您使用这种语法...
var controller = function (scope) {
};
controller.$inject = ["$scope"];
app.controller("appCtrl", controller);
答案 2 :(得分:-1)
如果每个文件只包含一个组件,则很少需要为模块引入变量。相反,使用简单的getter语法。使用模块时,使用带有getter语法的链接可避免变量冲突或泄漏。
来自John Papa's Angular style guide:
/* avoid */ var app = angular.module('app'); app.controller('SomeController' , SomeController); function SomeController() { }
/* recommended */ angular .module('app') .controller('SomeController' , SomeController); function SomeController() { }