为什么我们在angularjs中两次注入依赖项?

Has*_*ain 10 javascript dependency-injection angularjs

我是角色的新手,想要知道为什么以及何时应该两次注入所有需要的依赖项.

示例:

var analysisApp=angular.module('analysisApp',[]);

analysisApp.controller('analysisController',function($scope,$http,$cookies,$state,globalService){   

});
Run Code Online (Sandbox Code Playgroud)

但我们也可以将上面的代码写成:

var analysisApp=angular.module('analysisApp',[]);

analysisApp.controller('analysisController',['$scope','$http','$cookies','$state','globalService',function($scope,$http,$cookies,$state,globalService){ 

}]);
Run Code Online (Sandbox Code Playgroud)

为什么?

Tus*_*har 13

这是为了使应用程序安全.

小心:如果您计划缩小代码,您的依赖项名称将被重命名并破坏您的应用程序.

当你将(或可能),再压缩所有文件,依赖由像改为a,b,...等等.

但是,当您使用数组和字符串之类的语法时,如第二个片段所示,string它们永远不会缩小并可用于映射.所以,应用程序知道这a$scope(见下面的例子).

例:

// The minified version
var _ = angular.module('analysisApp', []);

_.controller('analysisController', ['$scope', '$http', '$cookies', '$state', 'globalService', function (a, b, c, d, e) {
    a.name = 'John Doe'; // Now a here is `$scope`.
}]);
Run Code Online (Sandbox Code Playgroud)

请参阅Angular Docs

这里有一篇很好的文章,让你的应用程序与Grunt minsafe.

对于缩小最佳实践:Angularjs缩小最佳实践