将依赖项注入ES2015模块

Lon*_*ick 7 javascript dependency-injection ecmascript-6 es6-module-loader

是否可以像ES#或其他编程语言一样将依赖注入ES2015模块?如果我导入一个模块,我会为它创建一个硬依赖项,并且以后不能在运行时更改它.例如,我有以下JavaScript代码:

import Animal from './dog';

class Person {
  feedAnimal() {
    new Animal().feed();
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在导入狗模块.但是,如果我想把它改成猫呢?目前我必须手动修改第1行,但在某些情况下我希望它可以从外部进行配置,以便在某些情况下应该有一只猫,在某些其他条件下它应该是猫.所有可以通过经典依赖注入完成的事情.

我知道有一些DI框架存在像,电解质,电线等可惜大多需要一些特殊的语法,并没有对由ES2015模块.

Lon*_*ick 0

我转向SystemJS。使用 SystemJS,您可以进行动态导入,例如System.import('foo').then(() => console.log('Loaded));

另一个优点是 System 将是新的 ECMAScript 标准模块加载器系统。