我强烈推荐第二个。
这背后的原因是缩小。Angular 将尝试通过 匹配您在模板中调用的控制器名称ng-controller
,例如:
<div ng-controller="Controller">
<!-- [...] -->
</div>
假设你有一个这样的控制器:
function Controller($scope) {};
并缩小它(使用一些缩小器),你会得到这样的输出:
function c(s) {};
快速编辑:我用 uglify 检查了它 - 它会保留你的函数名称(你会没事的),我在我的一个项目中使用了一个基于 maven 的缩小器,它实际上破坏了方法名称(我想我必须替换它)
您的应用程序可能会因此而中断。
因此,建议使用字符串作为控制器(和注入等)的标识符,如下所示:
var app = angular.module("module", []);
app.controller("Controller", ['$scope', function(scope) {
}]);
这将阻止缩小器破坏应用程序。像这样进行注射的原因如下:
var app = angular.module('module',[]);
function Ctrl($scope, $location) {
$scope.test = 42;
};
将被缩小为(通过 UglifyJS):
function Ctrl(a){a.test=2}var app=angular.module("module",[])
Angular 不会知道你需要$scope
这里。
如果缩小对您来说不重要,您可以使用其中任何一个,因为问题实际上只是分解为可维护性和可读性。此外,如果您有多个带有控制器的模块,第二个模块不会给您带来麻烦。