我经常在Angular 2中使用依赖注入来提供数据服务和数据对象的内存缓存。我有一种注射剂用于各种目的是很自然的。随着我的项目的增长,这个问题发生在我身上:
如果我将所有可注射函数和参数放在一个大类中,并将其注入我的所有组件,性能将如何受到影响?
这可以说明我的意思:
说我是否有可注射的A
,B
和C
以及组件a
,b
和c
(可能更多,但你明白了。)现在A
被注入a
;向B
注入b
,C
注入c
。如果我将所有注射剂合并到ABC
并将其注射到组件a
,b
,c
,这将如何影响我的表现?
答案 0 :(得分:4)
如果我将所有可注射函数和参数放在一个大类中,并将其注入我的所有组件,性能将如何受到影响?
如果你使用AoT,那么这将没有可测量的效果,因为AoT会为DI生成静态代码。
如果你使用platform_dynamic(没有AoT),那么可能会有一点不同。
为了使你的方法有意义,你需要做有或没有改变的基准测试,以获得关于这是否对性能有任何影响的严肃反馈。
通常更喜欢代码质量而不是性能,除非您可以证明特定代码会损害性能(不要过早优化)。
如果您可以更改代码,以便需要比以前更少的单个服务器请求,那么您可能会节省比所有DI需求更多的时间。
答案 1 :(得分:1)
将性能放在一边,包含所有依赖项的伞对象还有另一个问题。
它可能使代码的可读性降低,因为分析和确定组件的外部依赖关系变得有点困难。我们需要查看代码和引用以了解组件的依赖性。我相信这不是一个理想的实现。