依賴注入(Dependancy Injection)聽起來是一個望而生怯的詞,所有大的詞都有一個簡單易懂的切入點,那先來用一個例子解釋下DI。
有一下JS代碼
在logCar這個函數中,car是聲明后再進行使用的,這樣無法對logCar函數進行重用,不是好的設計。因此,依賴注入的概念就在以下優化代碼中體現了。
再來對比下以上的代碼,DI可以解釋傳入對象的Reference。
第二點要討論的,既然知道了DI是什么,那它在Angular中到底起了什么樣的核心作用呢?在解答前先來看app.ts中的一段代碼。
在瀏覽器的控制臺會看到$scope函數是有值的,也就是說$scope這個函數是由Angular創建好并傳入function中,換句話說Angular檢測到function需要一個$scope的參數,于是Framework就將$scope準備好并將其reference注入到function中。
一般在實際開發中,為了減少JavaScript的文件大小縮短下載時間,會對script文件進行精簡,于是function($scope)會被替換為function($a),這樣會導致DI出現問題,因此才會有將$scope放到array里,避免被替換成其他簡單的變量表達,最終寫法如下。