{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}我很高兴能见到你
依赖性注射容器后面 脚踢JS: 已打入的符号、装饰器、请求范围, @PostConstruct 编号 : @PreDestroy和在HMR存活下来的注册.
KickJS 应用程序已经拥有: @forinda/kickjs 取决于它,再出口一切。 从 @forinda/kickjs 并且不要安装这个包 旁边,因为两个拷贝 将保留自己的容器.
import 'reflect-metadata'
import { Container, Service, Inject, createToken } from '@forinda/kickjs-di'
const GREETING = createToken<string>('greeting')
@Service()
class Greeter {
constructor(@Inject(GREETING) private readonly greeting: string) {}
hi(name: string) {
return `${this.greeting}, ${name}`
}
}
const container = Container.getInstance()
container.registerInstance(GREETING, 'Hello')
container.resolve(Greeter).hi('Ada') // 'Hello, Ada'
ctn 是一个简短的别名 createToken数字 : const GREETING = ctn<string>('greeting')。 。 。 .
启动时配置容器一次 Container.setLogger(), (中文(简体) ), setErrorFactory(), (中文(简体) ), setEnvResolver() (计: @Value和 setRequestStoreProvider() (计: Scope.REQUEST)每个都有读取器 null 恢复默认值.
container.createChild() 给一个集装箱,先解决自己的捆绑问题,然后回到其父母身边:对一个租户、工作或测试进行超标,而不接触父母.
它使用遗留的装饰器: set experimentalDecorators 财务报告和审定财务报表 emitDecoratorMetadata 内 tsconfig.json。 。 。 .
全文 : kickjs.app/api/di (英语)。 。 。 .