这两个 angularjs 控制器定义有什么区别

What is the difference between these two angularjs controller definition

我不明白这两种 angularjs 控制器定义的区别, 我尝试了以下代码,发现两者都有效

myApp.controller('GreetingController', ['$scope', function($scope) {
  $scope.greeting = 'Hola!';
}]);

myApp.controller('GreetingController', function($scope) {
  $scope.greeting = 'Hola!';
});

第一个关心缩小。

在此控制器中:

myApp.controller('GreetingController', function($scope) {
    $scope.greeting = 'Hola!';
});

参数将被最小化为一些短值,依赖注入将不起作用。

请看:

第二个一旦缩小就不再工作了,因为缩小器会重命名参数以尽可能多地节省带宽:

myApp.controller('GreetingController', function(a) {
    a.greeting = 'Hola!';
});

由于 angular 使用参数的 names 来知道向控制器注入什么,这将失败。

第一种语法是规避这个问题的方法。

我使用 ngAnnotate 来自动将第二种语法转换为第一种语法,作为构建过程的一部分,在缩小之前