[英]Angular like dependency injection of services in Javascript
我正在寫一個Javascript npm包。 在我的代碼中,我有一個單一的類,希望像一個角度服務一樣工作。 僅應創建該類的一個實例,並且需要在項目中的任何地方共享該實例。
//this class object would be shared across project and only one object can be created. also, its implementation could change in future
export class SharedClass {
constructor(somethingImp) {
}
//more methods
}
export class ProjectClass1ThatNeedsSharedClassObj {
//it should get the required object
}
export class ProjectClass2ThatNeedsSharedClassObj {
//it should get the required object
}
如何編寫簡單的DI來實現此功能?
如果要通過DI的所有方法強制執行單個對象,則可以使用靜態變量。 這是我通常使用的模式
export class SearchProvider {
private static _default: SearchProvider
constructor() {
}
static get Default() {
return this._default || (this._default = new SearchProvider())
}
}
export class Consumer() {
private SearchProvider _provider = SearchProvider.Default;
}
1)使用@Injectable裝飾器將該類創建為服務2)將該類導入要使用的類3)在該類中創建服務類的實例4)現在您可以使用在中創建的實例訪問服務類的方法使用此關鍵字&的構造函數。 操作員5)您必須編寫一次服務類,並根據需要多次使用它
快樂編碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.