有什么理由(除了单元测试)使用Angular2依赖注入吗?



我想弄清楚为什么我们需要Angular2依赖注入。使用测试的情况很清楚:我们可以很容易地模拟任何服务。但你能提供其他原因吗?

使用DI可以获得更好的体系结构,其中类之间的耦合更加松散。这也是这样的代码可测试性更好的原因。

DI不仅允许轻松地模拟服务,还允许轻松地为生产场景配置。

您可以提供不同的配置值或服务实现,只需更改一个文件,但影响整个应用程序。

因此,使测试更容易的主要优点也具有测试之外的优点。

abstract class ConfigBase {
  get someConfigValue():number;
}
@Injectable()
class MyConfig1 extends ConfigBase {
  get someConfigValue():number {
    return 1;
  }
}
@Injectable()
class MyConfig2 extends ConfigBase {
  get someConfigValue():number {
    return 2;
  }
}
let config = new MyConfig1();
let serverUrl = 'http://example.com';
@NgModule({
  providers: [
    {provide: 'serverUrl', useValue: 'http://},
    {provide: ConfigBase, useValue: config}
  ],
  ...
})
@Injectable() 
class MyService {
  constructor(
      private http:Http,
      @Inject('serverUrl') private serverUrl:string,
      private config:ConfigBase
  ) {}
  doSomething() {
    console.log(this.config.someConfigValue);
    this.http.get(this.serverUrl).subscribe(...);
  }
}

相关内容

  • 没有找到相关文章

最新更新