angular.module('myApp',[])
.controller('DemoController',['$rootScope','$scope','$http',function($rootScope,$scope,$http){
}])
angular.module('myApp',[])
.controller('DemoController',function($rootScope,$scope,$http){
})
Was ist der Unterschied zwischen diesen beiden?
后面 function
傳入的參數(shù)無(wú)順序與數(shù)量要求.
第一種將傳入 function
的變量用字符串 '$rootScope','$scope','$http'
的方式指明, 第二種只是簡(jiǎn)單的變量名.
因?yàn)?js 壓縮工具會(huì)將 function($rootScope,$scope,$http)
里的 $rootScope,$scope,$http
混淆壓縮掉, 比如換成了 function(a,b,c)
.
代碼混淆壓縮后 angular 不知道向 function
里傳入的參數(shù)(或依賴(lài))是啥, 導(dǎo)入壓縮后不能運(yùn)行.
這是angular依賴(lài)注入的兩種方式:
第一個(gè)是行內(nèi)注入,第二個(gè)是推斷式注入 (還有一種是顯示注入)
區(qū)別是
行內(nèi)注入:
允許我們?cè)诤瘮?shù)定義時(shí)從行內(nèi)將參數(shù)傳入。此外,它可以避免在定義過(guò)程中使用臨時(shí)變量。
推斷式注入:
如果沒(méi)有明確的聲明, Angular會(huì)假定參數(shù)名稱(chēng)就是依賴(lài)的名稱(chēng),但這個(gè)過(guò)程只適用于未經(jīng)過(guò)壓縮和混淆的代碼,因?yàn)锳ngular需要原始未經(jīng)壓縮的參數(shù)列表來(lái)進(jìn)行解析。 (不過(guò)可以再打包過(guò)程中引入gulp-ng-annotate 將推斷式注入 會(huì)轉(zhuǎn)換成 行內(nèi)注入)
建議你閱讀下angular依賴(lài)注入的方法