angular - Angular NgZone.runOutsideAngular 和 OnPush 变化检测策略
问题描述
我正在尝试优化角度应用程序中代码的性能。
我知道我可以runOutsideAngular
编写一些代码,以免对每个代码运行或事件进行更改检测。
但是,我在使用变更检测策略runOutsideAngular
时是否需要使用?OnPush
(对于听众等)
解决方案
我想我现在有了答案。
在我看来,这取决于应用程序的外观。
如果它有很多未优化的组件并且异步操作会触发很多次或者它是一个事件侦听器,那么它必须在
runOutsideAngular
但是,如果应用程序主要由具有
OnPush
策略的组件构建或仅AppComponent
使用OnPush
(因为整个树将使用OnPush
在顶级组件上定义它的策略,不可逆地为整个应用程序定义此策略),那么您可以省略 usingrunOutsideAngular
as triggers for change检测不会影响任何事情
此外,我认为完全OnPush
优化的应用程序可以选择禁用 Zone 中的所有事件补丁,因此不需要,runOutsideAngular
因为所有异步事件都没有触发 NgZone 的意义。
推荐阅读
- asp.net-mvc - 如何使用来自 ASP.NET MVC 视图的@Input 将 JSON 数组传递给 Angular2 模板?
- angularjs - 来自服务的Angularjs绑定值
- python - Keras LSTM 输入 - ValueError:检查输入时出错:预期 input_1 具有 3 个维度,但得到的数组具有形状 (1745, 1)
- python - Python pandas 设置 NaN 值失败
- tomcat7 - Ubuntu VM CPU 过载
- arrays - 是否可以在 PowerShell 中使 IndexOf 不区分大小写?
- filter - Ansible: Use filter as conditional in playbook for role-inclusion
- c++ - shared_ptr
到 shared_pointer - python - Python Tkinter 通过多个窗口进行通信并在销毁后返回值
- sms - 从短代码号码接收短信?