以下两个控制器之间的区别

Difference between the below two controllers

我是 angular JS 的新手。我遇到了两种不同类型的控制器声明,我无法理解它在幕后的影响。

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

从上面的代码片段中,我了解到他们采用了一个依赖于控制器的函数,它有两个参数,一个是“$scope”,另一个是函数。

其他片段如下:

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

这里直接作为控制器的第二个参数,没有任何依赖。

请解释一下其影响的不同。

运行 您的 AngularJS 应用程序没有什么不同。

但是,当您尝试使用任务运行器(Gulp、Grunt 或其他)编译它时,第二个会破坏您的应用程序,因为 $scope 将被替换。

字符串在 minif 和 uglify 过程中不会被替换,这就是为什么你需要将依赖项注入 string.

This guidestyle 解释为什么你应该做第二个。

它们的功能相同,只是如果您要精简代码,您应该使用顶级控制器。 AngularJS 使用参数名称将值注入控制器函数。在 JavaScript 缩小过程中,这些参数被重命名为更短的字符串。通过使用字符串数组告知哪些参数被注入到函数中,AngularJS 仍然可以在重命名参数时注入正确的值。