容器模块
容器模块有助于管理大型应用程序中绑定的复杂性。
构造函数
constructor(load: (options: ContainerModuleLoadOptions) => void | Promise<void>)
ContainerModule 的构造函数参数是一个加载回调,带有用于管理容器模块范围内绑定的函数参数。
方法
load
load(options: ContainerModuleLoadOptions): Promise<void>
使用提供的选项加载容器模块。
ContainerModuleLoadOptions
要传递给加载回调的选项。它包含以下属性:
bind
bind: <T>(serviceIdentifier: ServiceIdentifier<T>) => BindToFluentSyntax<T>
有关更多信息,请参阅 文档。
isBound
isBound: (serviceIdentifier: ServiceIdentifier, options?: IsBoundOptions) => boolean
有关更多信息,请参阅 文档。
onActivation
onActivation: <T>(serviceIdentifier: ServiceIdentifier<T>, activation: BindingActivation<T>) => void
有关更多信息,请参阅 文档。
onDeactivation
onDeactivation: <T>(serviceIdentifier: ServiceIdentifier<T>, deactivation: BindingDeactivation<T>) => void
有关更多信息,请参阅 文档。
unbind
unbind: (serviceIdentifier: ServiceIdentifier) => Promise<void>
有关更多信息,请参阅 文档。
unbindSync
unbindSync: (identifier: BindingIdentifier | ServiceIdentifier) => void
有关更多信息,请参阅 文档。
示例:通过 ContainerModule API 绑定服务
当容器模块加载到容器中时,将调用加载回调。这是容器模块注册绑定和处理程序的机会。
当容器模块从容器中卸载时,该容器添加的绑定将被删除,并且每个绑定都将发生 停用过程。容器停用和 激活处理程序 也将被删除。
const warriorsModule: ContainerModule = new ContainerModule(
(options: ContainerModuleLoadOptions) => {
options.bind<Ninja>('Ninja').to(Ninja);
},
);
const weaponsModule: ContainerModule = new ContainerModule(
(options: ContainerModuleLoadOptions) => {
options.bind<Katana>('Weapon').to(Katana).whenNamed('Melee');
options.bind<Shuriken>('Weapon').to(Shuriken).whenNamed('Ranged');
},
);
await container.load(warriorsModule, weaponsModule);
const ninja: Ninja = container.get('Ninja');