前言
- 一直以來
static-injector都遵循修舊如舊原則,把 Angular 的依賴注入完整的提取出來 - 但是這樣的話在其他平台上必須使用transformer來進行一個靜態轉換,一個是影響速度,還有一個就是加大了配置難度
- 因為 Angular 的依賴注入增加了
inject可以在構造時讀取依賴項,所以基本上不影響功能.如果想使用providedIn可以改為類中加入靜態屬性static injectOptions={providedIn:'xxx'} - 修改後的
static-injector支持在任何node/瀏覽器上,不使用任何依賴,直接引入即可使用
簡介
- Angular 依賴注入的獨立版本
- 使用方法與 Angular 的依賴注入完全一致
- 不需要任何轉換器,引入即可使用
- 0依賴
-
移除裝飾器
@Injectable()=>static injectOptions={}
@Inject() xx=>xx=inject()
@Optional()等=>xx=inject(token,{optional:true}) -
JS/TS支持來源
- Angular 17.3.6
使用方法
- 以
Injector.create創建第一級依賴注入器
import { Injector, inject } from 'static-injector';
class Main {
child = inject(Child);
}
class Child {
output() {
return 'hello world';
}
}
let injector = Injector.create({ providers: [Main, Child] });
const instance = injector.get(Main);
console.log(instance.child.output());
實例
- https://github.com/wszgrcy/static-injector/tree/main/test/import