2009 年 AngularJS 第一個把「依賴注入」機制引入到了前端開發中,開創了用後端設計思想大規模入侵前端領域的先河。
如果沒有深入使用過 Spring 框架,「依賴注入」機制理解起來還是頗費腦力的,所以,我編寫了這個達人課,用我自己的語言重新解釋 Angular 注射器的各種使用技巧,希望能給 Angular 開發者帶來更深入的理解,當然還有更絲滑的閱讀體驗。
本課是一個小專題,聚焦在 Angular 的「依賴注入機制」,方便利用零碎時間閱讀和掌握,其內容全面而系統,覆蓋了與 DI 相關的所有 Decorator(裝飾器),同時補充了一些官方文檔上沒有出現的細節,所有的 demo 基於當前最新版本,以自己真實的學習過程爲線索來展開。可以說這個小專題可能是目前市面上最全面的一份總結了。
系列暢銷課程:《Angular 初學者快速上手教程》。
大漠窮秋,10 年開發經驗,其中 5 年後端、5 年前端。熟悉 Java 相關的技術體系:SpringMVC、MyBatis、Ehcache、ELK、MySQL 等。在前端技術方面尤其有深入的研究,先後使用並研究過 Flex、jQuery、Extjs、Backbone、Bootstrap、Angular 等常見的前端技術體系。
2016 ~ 2017 年期間,擔任 Angular Developer PM,專門幫助 Google Angular 團隊在中國推廣 Angular 框架。
若想了解更詳細的資料和演講照片,請點擊這裏。
衆所周知,2009年 AngularJS 第一個把「依賴注入」機制引入到了前端開發中,開創了用後端設計思想大規模入侵前端領域的先河。
憑心而論,如果你沒有深入使用過 Spring 框架,「依賴注入」機制理解起來還是頗費腦力的。
所以,我編寫了這個小專題,用我自己的語言重新解釋 Angular 注射器的各種使用技巧,希望能給 Angular 開發者帶來更深入的理解,當然還有更絲滑的閱讀體驗。
這個小專題裏面講的內容,在你日常的開發裏面用得不多,特別是那些分析原理的內容。So,這個小專題是給那些好奇寶寶看的。
如果你是 Angular 初學者,推薦預先閱讀 《Angular 初學者快速上手指南》系列,裏面有 34 篇長文、數百個小 demo,由淺入深帶你入門,該系列寫得比較細,包括:開發環境 @angular/cli 的搭建、VS Code 調試插件的使用、基礎概念的解釋和示範等等。
以上基礎內容在這個小專題裏面不再重複,如果你有需要,請自己移步過去仔細閱讀。再次強調:這個小專題不是入門材料!這個小專題不是入門材料!這個小專題不是入門材料!
由於水平有限、錯漏難免,歡迎指正,可以在讀者圈裏跟我溝通,也可以來論壇上發帖子提問。
爲了能更方便地理解後面的內容,需要預先理解以下兩個概念:
同時還要介紹一個調試神器 Augury,注意,這貨讀['ɔ:ɡjuri],是「占卜」、「預言」的意思,不是angry,不是憤怒!
目前,幾乎所有前端框架都在玩「組件化」,而且最近都不約而同地選擇了「標籤化」這種思路,Angular 也不例外。「標籤化」會導致一個很自然的結果,組件之間會形成樹形結構。例如,對於下面這樣一個界面:
用 Angular 實現出來的組件樹結構是這樣的:
在線查看運行效果,請單擊這裏查看。
如你所知,AngularJS 是第一個把「依賴注入」(Dependency Injection)思想帶到前端開發領域的框架。
在《Angular 初學者快速上手教程》裏面,關於「注射器樹」這事兒我們沒說太細,這裏要說得更精確一點:如果一個 DOM 元素上面被創建了 Component 或者 Directive,Angular 就會創建一個對應的注射器實例。
對於上面的組件結構,形成的注射器結構是這樣的:
很明顯,這些 Injector 實例也構成了樹形結構:
請記住這個樹形結構,後續的所有內容都是以此爲基礎展開的。
Augury 是一款 Chrome 插件,它是調試 Angular 應用的利器,利用它可以可視化展示組件樹、路由樹,以及服務依賴關係。
比如,對於 NiceFish 首頁:
它的服務依賴關係是這樣的:
組件依賴關係是這樣的:
整體路由樹是這樣的:
到這裏爲止,你知道了:在 Angular 應用運行時,組件之間會構成樹形結構,Injector(注射器)的實例也會構成樹形結構。
接下來,我們從易到難,把注射器玩兒出花來。
閱讀全文: http://gitbook.cn/gitchat/column/5a9e2d581bf25e5de3268ee9