提供可注入对象
提供组件
一个组件就是被 @Component
装饰过的类。
@Component()
@Scope(ComponentScope.SINGLETON)
class Timer {
startTime = Date.now()
getElapsed() {
return Date.now() - this.startTime;
}
}
const MyModule = createModule({
components: [Timer]
});
提供常量可注入对象
以下示例可以通过提供 Timer
作为常量来实现相同的目标,区别是 Timer
的实例将在加载源文件时立即创建。
另外,注意常量可注入对象总是在 SINGLETON
作用域中。
const TimerModule = createModule({
constants: [{
provide: Timer,
value: new Timer()
}]
});
通过工厂提供可注入对象
当需要使用工厂设计模式时,可注入对象也可以通过这种方式提供:
class TimerFactory extends ComponentFactory<Timer> {
build() {
return new Timer();
}
}
const TimerModule = createModule({
factories: [{
provide: Timer,
scope: ComponentScope.SINGLETON,
factory: TimerFactory
}]
});