Provider的其他选项

技术文档网 2021-04-28

Provider的其他选项 引入TOKEN的另一个目的在于,Provider不一定需要是一个类。

值提供者/Value Provider

比如,你可以把应用的配置信息登记到注入器里,这样其他代码就可以在需要时直接注入了。 配置信息通常不是一个类,而是一个具体的JSON对象,我们可以在创建Privider对象 时,使用useValue来声明一个值提供者:

var cfg_provider = provide("APP_CONFIG",{
    useValue : {title:'My Site'}
});
var injector = Injector.resolveAndCreate([cfg_provider]);
//使用
var cfg = injector.get("APP_CONFIG");

工厂提供者/Factory Provider

工厂提供者是工厂模式的实现。在创建Provider对象时,使用useFactory属性指定一个 工厂函数,它应当返回一个具体的对象。

var car_provider = provide("CAR",{
    useFactory : function(){return new Car();}
});
var injector = Injector.resolveAndCreate([car_provider]);
//使用
var car = injector.get("CAR");

声明依赖项

一个Provider可能依赖于其他的Provider,因此,在创建Provider对象时,有时需要使用 deps属性来声明这一点,以便注入器能够首先创建这些依赖项,再实例化这个Provider:

class A{}
class B{}
class ABAB{
    constructor(@Inject(A) a ,@Inject(B) b){...}
}
var injector = Injector.resolveAndCreate([
    provide(A,{useClass:A}),
    provide(B,{useClass:B}),
    provide(C,{useClass:C,deps:[A,B]}
]);

相关文章

  1. 硅谷互联网公司的开发流程

    开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro

  2. RESTful-表述性状态转移风格

    REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即

  3. 稳定性思考

    产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能

  4. Supervisor守护队列发邮件

    安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et

  5. 安装libsodium,让服务器支持chacha20等加密方式

    用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod

随机推荐

  1. 硅谷互联网公司的开发流程

    开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro

  2. RESTful-表述性状态转移风格

    REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即

  3. 稳定性思考

    产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能

  4. Supervisor守护队列发邮件

    安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et

  5. 安装libsodium,让服务器支持chacha20等加密方式

    用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod