我正在構建一個使用TypeScript的Aurelia Web應用程序,並考慮到模塊化。我的意思是,應用程序的每個部分都應該是獨立的,以便將來的維護更容易。Aurelia中的模塊化依賴註冊
最近幾天導致我頭疼的是我無法弄清楚如何以(更多)模塊化方式註冊我的依賴關係。我的意思是用代碼很容易就能說明問題。
例如,我有以下的接口在我的應用程序:
此接口的export interface HeaderItem {
name: string;
url: string;
}
實現我的應用程序的最頂部導航部分顯示出來。這個想法是,如果應該添加新的頂層部分,開發人員只需實現接口並將實現註冊到容器。
我的導航組件的代碼使用@all
注射的,看起來像這樣:
export class Header {
headerItems: any[] = [];
constructor(@all('HeaderItem') private _headerItems : any[]){
this.headerItems = _headerItems;
}
}
所以每次與HeaderItem
鍵註冊類型會從容器中得到解決。
讓我困擾的是,接口的每一個實現了在main.ts
文件要註冊這樣的:
aurelia.container.registerSingleton('HeaderItem', BatchHeaderItem);
我不喜歡這樣。我正在尋找的是一種方式,每個模塊都可以註冊其依賴項。我只想在main.ts
文件中註冊ModuleConfiguration
類。
但是,到目前爲止我嘗試的是我創建了一個Module
接口併爲我擁有的模塊實現它。然後我嘗試在配置方法中使用new
創建實例,導致完全白屏。我不知道這是爲什麼發生?!
我也試過的是,我註冊了容器的Module
實現,並在configure方法中解析它,然後試圖調用一個方法,當然,它也沒有按預期工作。
您是否知道更好的方法來使用內置的Aurelia依賴注入機制來分離組件的註冊以適合更模塊化的方法?
MyModule類如何註冊或自行調用?正如我在我的問題中提到的那樣,問題的根源在於我無法實例化並調用在啓動時註冊某些內容的組件。屏幕保持白色。控制檯沒有什麼 –
您可以在main.ts中導入和編寫'aurelia.container.get(MyModule);'來自動調整您的模塊。創建一個小回購,我們可以一起工作。 – zedL
這些信息也可能非常有用=> https://github.com/dryajov/aurelia-factory-methods – zedL