是否有可能像在其他編程語言(如C#或Java)中一樣注入ES2015模塊中的依賴項?如果我導入一個模塊,我創建一個硬依賴關係,並且不能在運行時稍後改變它。例如,我有以下JavaScript代碼:將依賴關係注入到ES2015模塊中
import Animal from './dog';
class Person {
feedAnimal() {
new Animal().feed();
}
}
我正在導入狗模塊。但是如果我想把它改成貓呢?目前我必須手動修改第1行,但在某些情況下,我希望可以從外部對其進行配置,以便在某些情況下應該有貓,而在其他情況下,它應該是貓。所有那些可以用經典的依賴注入來完成的事情。
我知道有一些直接投資框架有像Scatter,Electrolyte,Wire等可惜大多需要一些特殊的語法,並不爲ES2015 modules製造。
你想如何依賴注入工作?你可以做'class Person {constructor(Animal){this.Animal = Animal; } feedAnimal(){new this.Animal()。feed()}}',但這聽起來像是你期待更高級的東西。 – lyschoening
我不確定['require-inject'](https://www.npmjs.com/package/require-inject)是否支持,但您可能需要查看一下。 – thefourtheye
@lyschoening謝謝,但我想改變內部模塊依賴關係,就像我會寫一個單元測試。 – LongFlick