是否有可能像在其他编程语言(如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