是否可以像 C# 或 Java 等其他编程语言一样将依赖项注入到 ES2015 模块中?如果我导入一个模块,我会创建一个对它的硬依赖,并且以后不能在运行时更改它。例如,我有以下 JavaScript 代码:
import Animal from './dog';
class Person {
feedAnimal() {
new Animal().feed();
}
}
我正在导入狗模块。但是如果我想把它变成一只猫呢?目前我必须手动修改第 1 行,但在某些情况下,我希望它可以从外部进行配置,以便在某些情况下应该有一只猫,而在其他一些情况下它应该是一只猫。所有这些都可以通过经典的依赖注入来完成。
我知道有一些 DI 框架,如Scatter、Electrolyte、Wire等,但不幸的是,它们中的大多数都需要一些特殊的语法,并且不是为ES2015 模块制作的。