@notadd/di
TypeScript icon, indicating that this package has built-in type declarations

3.2.0 • Public • Published

@notadd/di

Version License Downloads

一款零依赖的依赖注入工具 - from angular

package size: 10.2 kB unpacked size: 40.6 kB

static create

Injector.create([])

scope

injector 作用域

import { Injector } from '@notadd/di';
// scope = null
const nullInjector = Injector.create([])
// scope = root , parent scope = null
const injector = nullInjector.create([{provide: INJECTOR_SCOPE, useValue: 'root'}])
// scope = platform , parent scope = root , parent parent scope = null
const injector = injector.create([{provide: INJECTOR_SCOPE, useValue: 'platform'}])

multi provider

用于渐进式注入

import { rootInjector, InjectionToken } from '@notadd/di';
const token = new InjectionToken(`token`)
const inejctor = rootInjector.create([{ provide: INJECTOR_SCOPE, useValue: 'platform' }, { provide: token, useValue: 1, multi: true }])
const appModuleInjector = inejctor.create([
    { provide: token, useValue: 2, multi: true }, 
    { provide: token, useValue: 3, multi: true }
], 'AppModule')
// token wile be [1,2,3]
const tokens = appModuleInjector.get(token)

ValueProvider

使用指定值

rootInjector.create([{
    provide: Car,
    useValue: new Car()
}])

ConstructorProvider

快捷注入,使用自身

rootInjector.create([{
    provide: Car,
    deps: [CarNum]
}])

ExistingProvider

使用已注入的

rootInjector.create([{
    provide: Car,
    useExisting: Car2
}])

StaticClassProvider

使用useClass指定的类

rootInjector.create([{
    provide: Car,
    useClass: Car,
    deps: [CarNum]
}])

FactoryProvider

使用指定factory进行创建

rootInjector.create([{
    provide: Car,
    useFactory: ()=>new Car(),
    deps: []
}])

SkipSelf

跳过当前

rootInjector.create([{
    provide: Car,
    useFactory: ()=>new Car(),
    deps: [new SkipSelf(), CarNum]
}])

Self

使用当前

rootInjector.create([{
    provide: Car,
    useFactory: ()=>new Car(),
    deps: [new Self(), CarNum]
}])

Optional

当找不到时,不报错,可以为空

rootInjector.create([{
    provide: Car,
    useFactory: ()=>new Car(),
    deps: [new Optional(), CarNum]
}])

组合使用

使用当前,并可以为空

rootInjector.create([{
    provide: Car,
    useFactory: ()=>new Car(),
    deps: [new Self(), new Optional(), CarNum]
}])

Readme

Keywords

none

Package Sidebar

Install

npm i @notadd/di

Weekly Downloads

1

Version

3.2.0

License

ISC

Unpacked Size

111 kB

Total Files

59

Last publish

Collaborators

  • tian-hun
  • lei3265018
  • zuohuadong
  • imeepos2