绑定
声明了标识符和依赖项之后,还需要建立标识符和依赖项之间的绑定关系,并将这些绑定注册在注入器上。注入器只有在知道一组绑定的前提下,才能够根据标识符返回依赖项。
有两种方式在注入器上注册绑定:
- 作为注入器构造函数的参数
- 调用注入器的
add
方法
作为注入器构造函数的参数
注入器 Injector
构造函数的第一个参数就是一组绑定,你在之前的小节中看到过大量这样的代码:
const injector = new Injector([
[SomeClass],
[IdentifierA, { useClass: SomeClass }],
[IdentifierB, { useValue: SomeValue }],
[IdentifierC, { useFactory: SomeFactory }],
[IdentifierD, { useAsync: SomeAsyncFunction }],
]);
调用注入器的 add
方法
injector.add([SomeClass]);
injector.add([IdentifierA, { useClass: SomeClass }]);
injector.add([IdentifierB, { useValue: SomeValue }]);
这种方式更为灵活,因为它不会限制你在什么时候注册绑定,但这种绑定可能是双刃剑,当你通过注入器获取依赖时,它可能没有来得及被注册。因此我们推荐优先使用第一种方法,除非你能够确保正确的注册和获取的先后顺序,才使用第二种。