2015-04-03 38 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來預處理你的角碼,並使其小型化。