我问的是这个问题,因为我们现在正在构建的应用程序速度非常慢,尽管我们没有做过疯狂的事情!
只需一个简单的多步骤表格就可以说20个字段。 该应用程序非常慢,特别是滚动我可以直观地看到滞后。 所有组件都是定制和定制的,因此我们不使用任何第三方库。
我试图将所有组件都封装起来:ViewEncapsulation.None,我不能100%说这解决了这个问题,但它确实让它有点顺利。
有没有人对此有很好的经验?
答案 0 :(得分:1)
首先,如果您调查效果,请确保已启用prodMode
。在devMode
中,更改检测始终会进行第二次转弯。
ViewEncapsulation.Emulated
(默认)会对性能产生一次性影响。对于此构建步骤将很快提供,因此在Angular应用程序甚至提供给客户端之前,这是静态完成的。
ViewEncapsulation.Native
可以提高性能,因为它可以让浏览器更好地优化重新呈现,因为它可以将重新呈现限制为单个组件而不是整个页面。无法保证浏览器实际上进行了这种优化。但这是影子穿孔选择器/deep/
(>>>
)和::shadow
从阴影DOM规范中删除的主要原因。
答案 1 :(得分:0)
实际上,它会影响性能。这就是恕我直言,@angular/material
之类的UI库使用ViewEncapsulation.None
的原因。模拟的影子DOM意味着对于每个组件,都将新的样式表添加到DOM中,因此样式渲染较慢。
奇怪的是,您的屏幕上有20个组件,但是我可以肯定地想象,数十个或数百个组件会导致性能下降。当该组件具有复杂且未优化的CSS规则时,甚至更多