是否可以像ES#或其他编程语言一样将依赖注入ES2015模块?如果我导入一个模块,我会为它创建一个硬依赖项,并且以后不能在运行时更改它.例如,我有以下
JavaScript代码:
import Animal from './dog'; class Person { FeedAnimal() { new Animal().Feed(); } }
我正在导入狗模块.但是如果我想把它变成猫呢?目前我必须手动修改第1行,但在某些情况下我希望它可以从外部配置,以便在某些条件下应该有一只猫,在其他条件下它应该是一只猫.所有可以通过经典依赖注入完成的事情.
我知道有一些DI框架,如Scatter,Electrolyte,Wire等,但不幸的是大多数都需要一些特殊的语法,而不是为ES2015 modules制作.
解决方法
您无法动态定义依赖项.
See this question and its accepted answer:
Question: ES6 variable import name in node.js?
Answer: Not with the import statement. import and export are defined in such a way that they are statically analyzable,so they cannot depend on runtime information.