Injectable如何影响Angular 2的表现

时间:2017-01-11 08:01:42

标签: javascript angular dependency-injection

我经常在Angular 2中使用依赖注入来提供数据服务和数据对象的内存缓存。我有一种注射剂用于各种目的是很自然的。随着我的项目的增长,这个问题发生在我身上:

如果我将所有可注射函数和参数放在一个大类中,并将其注入我的所有组件,性能将如何受到影响?

这可以说明我的意思:

说我是否有可注射的ABC以及组件abc(可能更多,但你明白了。)现在A被注入a;向B注入bC注入c。如果我将所有注射剂合并到ABC并将其注射到组件abc,这将如何影响我的表现?

2 个答案:

答案 0 :(得分:4)

  

如果我将所有可注射函数和参数放在一个大类中,并将其注入我的所有组件,性能将如何受到影响?

如果你使用AoT,那么这将没有可测量的效果,因为AoT会为DI生成静态代码。

如果你使用platform_dynamic(没有AoT),那么可能会有一点不同。

为了使你的方法有意义,你需要做有或没有改变的基准测试,以获得关于这是否对性能有任何影响的严肃反馈。

通常更喜欢代码质量而不是性能,除非您可以证明特定代码会损害性能(不要过早优化)。

如果您可以更改代码,以便需要比以前更少的单个服务器请求,那么您可能会节省比所有DI需求更多的时间。

答案 1 :(得分:1)

将性能放在一边,包含所有依赖项的伞对象还有另一个问题。

它可能使代码的可读性降低,因为分析和确定组件的外部依赖关系变得有点困难。我们需要查看代码和引用以了解组件的依赖性。我相信这不是一个理想的实现。