1
头图

前言

  • 一直以来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());

实例


wszgrcy
25 声望10 粉丝

我说我懂Angular,你们信吗