Angular NgZone.runOutsideAngular和OnPush更改检测策略



我正在努力优化angular应用程序中代码的性能。

我知道我可以runOutsideAngular一些代码,以免在每次代码运行或事件中引起更改检测。

但是,当我使用OnPush变化检测策略时,我是否需要使用runOutsideAngular?(用于听众等(

我想我现在有了答案。

在我看来,这取决于应用程序的外观。

  • 如果它有许多未优化的组件,并且异步操作将多次触发,或者它是一个事件侦听器,那么它必须在runOutsideAngular

  • 然而,如果一个应用程序主要是用具有OnPush策略的组件构建的,或者只是AppComponent使用OnPush(因为整个树将使用OnPush策略,在顶级组件上定义它,并为整个应用程序不可逆转地定义此策略(,那么您可以省略使用runOutsideAngular,因为更改检测的触发器不会影响任何

此外,我认为完全OnPush优化的应用程序可以选择禁用Zone中的所有事件补丁,因此不需要runOutsideAngular,因为所有异步事件都没有触发NgZone的点。

最新更新