簡體   English   中英

Angular類似的Java服務依賴注入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM