TLDR
- 将鼠标移到 Angular 组件上 - 一切都很好!
- 将鼠标移到 AngularJS 组件上 - 非常高的 CPU 负载,性能问题,为什么?
我们有一个 Angular 混合应用程序。使用的版本是:
- 角度:7.1.3
- AngularJS:1.7.5
- zone.js:0.8.28
不幸的是,我们有大量的性能问题。我发现,当您移动鼠标时,CPU 负载会达到 100% 。
奇怪的是:已经升级到 Angular 的组件没有这种行为!当您移动鼠标时,大麦不会对 CPU 监视器产生影响。然而,在尚未升级的旧 AngularJS 组件中,如下图所示。
在 zone.js 中,我们使用了黑名单,如此处所述
polyfills.js,(通过index.html导入)
window.__Zone_disable_requestAnimationFrame = true; /* disable patch requestAnimationFrame */
window.__Zone_disable_on_property = true; /* disable patch onProperty such as onclick */
window.__zone_symbol__BLACK_LISTED_EVENTS = [
'scroll',
'mouseenter',
'mouseleave',
'mouseout',
'mouseover',
'mousewheel',
'mousemove',
'dragover',
'dragenter',
'dragleave',
]; /* disable patch specified eventNames */
/* black list scroll event handler for onProp */
const targets = [window, Document.prototype, HTMLBodyElement.prototype, HTMLElement.prototype];
window.__Zone_ignore_on_properties = [];
targets.forEach(function(target) {
window.__Zone_ignore_on_properties.push({
target: target,
ignoreProperties: ['scroll', 'mouseenter', 'mouseleave', 'mousemove', 'mouseover', 'mouseout', 'mousewheel'],
});
});
window.__Zone_disable_XHR = true;
那么我们如何解决这个问题,AngularJS 部分没有这个巨大的性能问题呢?