vue 虚拟dom && diff算法

124 阅读1分钟

是什么?

虚拟dom是一个普通的javascript对象,用来描述真实的dom信息。

为什么要使用虚拟dom?

  • 创建一个虚拟dom的开销比真实dom小很多。
  • 手动操作 DOM 比较麻烦,还需要考虑浏览器兼容性问题,虽然有 jQuery 等库简化 DOM 操作, 但是随着项目的复杂 DOM 操作复杂提升。
  • 为了简化 DOM 的复杂操作于是出现了各种 MVVM 框架,MVVM 框架解决了视图和状态的同步问题。
  • 为了简化视图的操作我们可以使用模板引擎,但是模板引擎没有解决跟踪状态变化的问题,于是Virtual DOM 出现了
  • Virtual DOM 的好处是当状态改变时不需要立即更新 DOM,只需要创建一个虚拟树来描述DOM, Virtual DOM 内部将弄清楚如何有效(diff)的更新 DOM
  • 参考 github 上 virtual-dom 的描述
    • 虚拟 DOM 可以维护程序的状态,跟踪上一次的状态
    • 通过比较前后两次状态的差异更新真实 DOM

diff算法很棒的文章,只看这一篇就够了,已掌握