您好,登錄后才能下訂單哦!
這篇文章主要介紹Angular中依賴注入模式是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
依賴注入: Dependency Injection 簡稱 DI
開發中, 會經常遇見對象的實例化, 當多個對象之間存在依賴時, 手工實例化會特別麻煩。
如果一個對象A要依賴對象 B, 那么對象 A 不需要明確地去實例化B對象, B 會由外部機制注入進來, 對象 A 只需要聲明一個B對象就行。 這就是依賴注入要解決的問題。
與依賴注入經常同時出現的另一個概念叫做控制反轉。
控制反轉: Inversion of Control 簡稱 IOC, 是指將依賴的控制權從代碼的內部反轉到代碼的外部。
依賴注入和控制反轉是一體兩面, 表達的是一個思想。 依賴注入側重于描述手段, 即如何實現控制反轉, 控制反轉側重于描述目的, 即目的是將依賴的控制權從代碼的內部反轉到代碼的外部。
相關教程推薦:《angular教程》
松耦合,可重用
提高組件的可測試性
每個組件都有一個注入器實例, 負責注入組件需要的對象。 注入器是 Angular 提供的一個服務類。 一般情況下不用直接調用注入器的方法, 注入器會自動通過組件的 構造函數(constructor) 將組件需要的對象注入進組件。 提供器會告訴注入器如何創建實例。
為了讓注入器知道注入的對象如何實例化,需要指定提供器,一般情況下,我們會通過組件或模塊的 providers 屬性聲明需要提供的對象。
providers:[{provide:AService, useClass: AServivce}] <=> providers:[AService] provide 屬性:指定了提供器的令牌(token) useClass 屬性:表示實例化方式是 new
使用 useFactory 方式實例化對象 providers:[ { provide:AService, useFactory: (bService: BService) => { .... }, deps:[BService] //deps聲明工廠方法所依賴的服務。 ] 工廠方法創建的對象是單例對象
在構造函數(constructor)中聲明的對象,會根據類名去匹配提供器(providers)中的令牌(token),然后根據 useClass 屬性的值去實例化指定的對象。
當一個提供器聲明在模塊時,對所有組件都是可見的,所有組件都可以注入;
當一個提供器聲明在組件時,只對聲明它的組件和子組件可見,其他組件不可見;
當聲明在模塊的提供器與聲明在組件的提供器具有相同 token 時,聲明在組件的提供器會覆蓋聲明在模塊的提供器;
一般情況下,我們都應該在模塊中聲明提供器。
以上是“Angular中依賴注入模式是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。