跳到主要内容
版本:Next

容器模块

容器模块有助于管理大型应用程序中绑定的复杂性。

构造函数

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');