本篇文章帶大家了解一下依賴(lài)注入,介紹一下依賴(lài)注入解決的問(wèn)題和它原生的寫(xiě)法是,并聊聊Angular的依賴(lài)注入框架,希望對(duì)大家有所幫助!
最近在Angular項(xiàng)目中經(jīng)常能碰到依賴(lài)注入這個(gè)關(guān)鍵詞,但是始終不理解它是怎么實(shí)現(xiàn)的,在Angular的官網(wǎng)上也只有關(guān)于它的使用,詳細(xì)點(diǎn)的原理并沒(méi)有說(shuō)明,所以就下來(lái)我們就從原生的寫(xiě)法來(lái)講解一下,依賴(lài)注入是用來(lái)解決什么問(wèn)題的,他用js應(yīng)該怎么去表現(xiàn)?!鞠嚓P(guān)教程推薦:《angular教程》】
依賴(lài)注入是什么
依賴(lài)注入簡(jiǎn)稱(chēng)DI,是面向?qū)ο缶幊讨械囊环N設(shè)計(jì)原則,用來(lái)減少代碼之間的耦合度。
我們先來(lái)看一段代碼
class Video{ constructor(url){} } class Note{ video: Video constructor(){ this.video = new Video("https://aaaaa.mp4") } getScreenshot(){ this.video.getScreenshot() } } const note = new Note() note.getScreenshot()
假設(shè)我們用一個(gè)視頻類(lèi),它其中有一個(gè)方法 getScreenshot 獲取截圖,在實(shí)例化視頻類(lèi)的時(shí)候,需要傳入一個(gè)視頻 url 這樣的參數(shù)。現(xiàn)在有一個(gè)筆記類(lèi),它需要去調(diào)用視頻類(lèi)下的截圖方法,那么我們就可以說(shuō),筆記類(lèi)是依賴(lài)于視頻類(lèi)的。所以在筆記類(lèi)的內(nèi)部,我們就需要去實(shí)例化視頻類(lèi),這樣才能在筆記類(lèi)中獲取視頻類(lèi)的實(shí)例對(duì)象,并且調(diào)用它里面的截圖方法。
上面代碼的耦合度過(guò)高,并不推薦使用,比方說(shuō)如果Video的視頻地址換了一個(gè),那么在Note中就需要去改變傳入的視頻url,這樣假設(shè)要是有