如何计算 Angular 应用中给定 class 的实例数?

How to count the number of instances for a given class in an Angular app?

阅读以下有关 Angular 应用中的不纯和纯管道的链接:

我想亲自看看 Angular 应用程序创建的实例,但我什至不确定这是否真的可行。不一定是管道,而是任何东西。说组件和其他。

例如,这可以帮助我理解我想更好地了解有关摘要周期的实例创建时间。

是否有用于该目的的调试解决方案/分析器?

我不确定它是否是您想要实现的解决方案,但有 Augury 用于调试 Angular。

augury.angular.io

总的来说我觉得它很有用。

我不确定 debugging/profiler 该工具,因为我从来不需要它,但这可能有助于您理解实例化。

组件、管道和指令是为每次使用实例化的。这意味着它们是完全构建的,每个都有单独的生命周期。

服务可以是单例的,也可以是每次使用的实例。您在应用程序中编写的许多服务都是单例。如果您考虑单例,您可以想象从服务器获取数据的服务、状态管理服务(存储)、按需向用户显示某些信息的服务(toastr)、语言服务(初始翻译和切换语言),.. .

Singleton 服务的主题涉及很多内容,因此我建议阅读 https://angular.io/guide/singleton-services

如果您想可视化正在创建的实例,可以通过在构造函数中编写一些简单的日志来轻松完成(当创建 class 的新实例时构造函数正在运行)。

要在每次构造时记录 class 的名称,请将 console.log(this.constructor.name) 添加到您要记录的 class 的构造函数中。

是的,可以使用可以为每个 class 实例共享或通用的东西来完成。并且在 angular 应用程序中创建服务以在组件之间共享数据。使用相同的概念:

  • 在服务中放置一个 public 变量,比如 public 计数:数量 = 0,在文件 SharedService
  • 在 class 的构造函数中注入这个服务实例,并增加这个变量。 构造函数(私有共享服务实例:共享服务){ this.sharedServiceInstance.count++; }
  • 获取服务计数变量即可知道,应用程序初始化后创建的实例数。 console.log(this.sharedServiceInstance.count)