2015-04-03 102 views
0

我有控制器以下非minfied和精缩版本代码:缩小这两段代码的区别是什么?

非精缩版本代码:

phonecatApp.controller('PhoneListCtrl', function PhoneListCtrl($scope, $http) { 
    //code for controller 
}); 

精缩版本代码:

phonecatApp.controller('PhoneListCtrl', ['$scope', '$http',function PhoneListCtrl($scope, $http) { 
    //code for controller 
}]); 

我不不知道为什么缩小的版本代码被优先考虑?缩小和非缩小版本代码有什么区别?

+0

你问我们为什么要缩小代码的总体,或者两者有什么区别,你的例子中的“缩小”版本并没有在术语的意义上被缩小。 – dbarnes 2015-04-03 17:49:53

+2

您可以缩小以减小下载大小和模糊意图。您必须使用AngularJS代码的阵列版本才能缩小不会损坏AngularJS。 – 2015-04-03 17:51:10

+0

我认为这是因为缩小了变量的名字,并且没有显式映射名字,就像在第二个例子中那样,它可能会破坏注入。 – lintmouse 2015-04-03 17:51:53

回答

4

Minification重命名变量(除其他外)。您的第一个样品在缩小时将不再起作用,因为当重新命名$scope$http时角将不知道要注入什么。你的第二个例子,使用数组语法,告诉角度无论变量名称注入什么。

(有在您的两个例子语法错误:PhoneListCtrl($scope, $http)应该function PhoneListCtrl($scope, $http)

注:使用命名函数时,你是,有用于缩小率,安全角码的另一种选择:

phonecatApp.controller('PhoneListCtrl', PhoneListCtrl); 

PhoneListCtrl.$inject = ['$scope', '$http']; 

function PhoneListCtrl($scope, $http) { 
    //code for controller 
} 

最后,如果你真的喜欢你的第一个例子,你可以使用ng-annotate来预处理你的角码,并使其小型化。