首页 > 解决方案 > Angular 7 中注入服务与单例服务的内存和性能比较

问题描述

我想了解 Angular 7 中单例与注入服务的内存和性能影响。

例如,假设我在页面上有一个组件列表,并且每个组件都注入了相同的服务(即它在组件提供程序中列出)。这是否意味着如果我有 50 个组件,我将需要 50 倍于注入服务的内存需求,而不是对所有人都通用的单例服务?

是否还有其他性能影响需要考虑?

标签: angular

解决方案


这是否意味着如果我有 50 个组件,我将需要 50 倍于注入服务的内存需求,而不是对所有人都通用的单例服务?

仅当每个组件具有不同的模块并且:

  • 各模块提供服务;

  • 或者在一个模块中提供服务,在每个组件模块中导入该模块;

如果任何组件共享一个提供服务的模块,它将围绕这些组件是单例的。

我读过Netanel Basal的一篇非常好的文章—— “Angular Services do not have to be Singleton

他在谈到单例服务时说:

The sole purpose of the service is to share data between child’s components and to provide a couple of helper’s methods.

如果你有一个单例服务,它将只是一个实例,但在整个应用程序生命周期中(即使你不使用它),否则,如果你有非单例服务实例,它将消耗更多的内存和每个服务实例只有当其模块的所有组件都被销毁时才会被销毁。

我想说你可以尝试在你的应用程序中控制这些好处的权衡。

其他非单身福利是:

我们甚至可以实现ngOnInitngOnDestroy生命周期,你可以在这里查看


推荐阅读