运行 Angular 区域外的分析脚本
Running analytics scripts outside of Angular zone
在我的 Angular 网站上,我正在注入各种第三方脚本来收集分析。这些脚本是延迟加载的,并将向页面上的某些元素添加事件侦听器(针对 f.e.click 事件)。
通常我会将这种功能包装在 runOutsideAngular
中,但由于这些脚本是外部的,我认为我没有这种能力。请注意,这些脚本与 Angular 完全无关。
当 运行 性能记录或 JavaScript 分析器(都在 Chrome 中)时,分析功能似乎在某种程度上 运行 通过 zone.js
,而我实际上希望它们尽可能地 运行。
如何确保这些脚本不受任何 Angular 区域的影响?
zone.js
的工作方式是修补应用程序中的所有异步操作。所以这是正确的,你所有的代码,甚至外部代码,都在一个区域中运行。
但这并不意味着它在 Angular 区域中运行并且会导致更改检测周期。它运行在与 Angular 不同的区域。这就是 Angular 甚至使用区域的原因 - 将 Angular 应用程序与其他脚本分开。
在我的 Angular 网站上,我正在注入各种第三方脚本来收集分析。这些脚本是延迟加载的,并将向页面上的某些元素添加事件侦听器(针对 f.e.click 事件)。
通常我会将这种功能包装在 runOutsideAngular
中,但由于这些脚本是外部的,我认为我没有这种能力。请注意,这些脚本与 Angular 完全无关。
当 运行 性能记录或 JavaScript 分析器(都在 Chrome 中)时,分析功能似乎在某种程度上 运行 通过 zone.js
,而我实际上希望它们尽可能地 运行。
如何确保这些脚本不受任何 Angular 区域的影响?
zone.js
的工作方式是修补应用程序中的所有异步操作。所以这是正确的,你所有的代码,甚至外部代码,都在一个区域中运行。
但这并不意味着它在 Angular 区域中运行并且会导致更改检测周期。它运行在与 Angular 不同的区域。这就是 Angular 甚至使用区域的原因 - 将 Angular 应用程序与其他脚本分开。