Javascript 可注入性如何影响Angular 2性能

Javascript 可注入性如何影响Angular 2性能,javascript,angular,dependency-injection,Javascript,Angular,Dependency Injection,我经常在Angular 2中使用依赖注入来提供数据服务和数据对象的内存缓存。这是很自然的,我有一个注射每种类型的目的。随着我的项目的发展,我想到了这个问题: 如果我将所有可注入函数和参数放在一个大类中,并将其注入到我的所有组件中,性能会受到怎样的影响 这可以说明我的意思: 假设我有可注入的A,B和C和组件A,B和C(可能更多,但你知道了)。现在A被注入AB被注入到B中,C被注入到C。如果我将所有可注入项组合到ABC,并将其注入组件a,b,c,这将如何影响我的性能 如果我将所有可注入函数和参数放在

我经常在Angular 2中使用依赖注入来提供数据服务和数据对象的内存缓存。这是很自然的,我有一个注射每种类型的目的。随着我的项目的发展,我想到了这个问题:

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

这可以说明我的意思:

假设我有可注入的
A
B
C
和组件
A
B
C
(可能更多,但你知道了)。现在
A
被注入
A
B
被注入到
B
中,
C
被注入到
C
。如果我将所有可注入项组合到
ABC
,并将其注入组件
a
b
c
,这将如何影响我的性能

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

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

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

为了使您的方法有意义,您需要在有更改和没有更改的情况下进行基准测试,以获得关于这是否对性能有任何影响的认真反馈

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


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

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


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

谢谢您的回答。我对下面的评论很感兴趣:“如果你能改变你的代码,使你比以前少需要一个服务器请求,你可能会比所有DI需求加在一起节省更多的时间。”你能详细说明服务器请求是如何影响JS性能的吗?我实际上遇到了一种情况,我需要每2秒ping一次服务器以获取状态。你对此有更好的建议吗?我提到它是为了透视。服务器请求比完全在浏览器中运行的操作所需的时间多3个数量级。通常情况下,优化工作在大部分时间花费的地方比在已经很快的事情上获得更好的回报。