如何计算 Angular 应用中给定 class 的实例数?
How to count the number of instances for a given class in an Angular app?
阅读以下有关 Angular 应用中的不纯和纯管道的链接:
- https://blog.angularindepth.com/the-essential-difference-between-pure-and-impure-pipes-and-why-that-matters-999818aa068
- https://blog.mgechev.com/2017/11/12/faster-angular-applications-pure-pipes-memoization-pure-functions-part-2/
我想亲自看看 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)
阅读以下有关 Angular 应用中的不纯和纯管道的链接:
- https://blog.angularindepth.com/the-essential-difference-between-pure-and-impure-pipes-and-why-that-matters-999818aa068
- https://blog.mgechev.com/2017/11/12/faster-angular-applications-pure-pipes-memoization-pure-functions-part-2/
我想亲自看看 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)