前端框架使用什么技术来优化重排和重绘

47 阅读2分钟

1. 虚拟 DOM

  • 技术:在内存中维护虚拟 DOM 树,更新时先比较新旧虚拟 DOM,仅将差异应用到实际 DOM。
  • 框架:React、Vue 等。
  • 优点:减少直接操作真实 DOM 的频率,降低重排和重绘。

2. 批量更新

  • 技术:将多个 DOM 更新合并为一次操作。
  • 框架:React 使用事务机制,Vue 通过异步队列实现。
  • 优点:减少多次重排和重绘。

3. CSS 优化

  • 技术:使用 transform 和 opacity 等属性,避免触发重排和重绘。
  • 框架:React、Vue、Angular 等。
  • 优点:利用 GPU 加速,减少性能开销。

4. 分离读写操作

  • 技术:集中读取 DOM 属性,再进行写操作,避免交替读写导致的多次重排。
  • 框架:React、Vue 等。
  • 优点:减少不必要的重排。

5. 使用 requestAnimationFrame

  • 技术:将 DOM 更新放在 requestAnimationFrame 回调中,确保在下一次重绘前完成。
  • 框架:React、Vue 等。
  • 优点:优化动画和频繁更新的性能。

6. 惰性加载和分块渲染

  • 技术:延迟加载和渲染非关键内容,减少初始渲染压力。
  • 框架:React 的 React.lazy 和 Suspense,Vue 的异步组件。
  • 优点:提升初始加载性能。

7. 使用 will-change

  • 技术:通过 will-change 提示浏览器元素可能的变化,提前优化。
  • 框架:React、Vue、Angular 等。
  • 优点:帮助浏览器优化渲染。

8. 避免强制同步布局

  • 技术:避免强制同步布局(如读取 offsetHeight 后立即修改样式)。
  • 框架:React、Vue 等。
  • 优点:减少不必要的布局计算。

总结

前端框架通过虚拟 DOM、批量更新、CSS 优化、分离读写操作、requestAnimationFrame、惰性加载、will-change 和避免强制同步布局等技术,有效减少重排和重绘,提升性能。