# 1、什么叫虚拟dom?

virtral Dom就是将真实Dom的数据抽象处理,以对象的形式模拟树形结构。虚拟DOM本质上是JavaScript对象,是对真实DOM的抽象。状态变更时,记录新树和旧树的差异(diff算法),最后把差异更新到真正的dom中(patch算法)。

    //真实dom
    <div>
        <span>测试</span>
    </div>
    //虚拟dom 伪代码 Vnode和oldVnode都是对象
    var Vnode = {
        tag: 'div',
        children: [
            { tag: 'span', text: '测试' }
        ]
    };
1
2
3
4
5
6
7
8
9
10
11

虚拟dom的优点

  • 1、保证性能下限。虚拟dom通过diff找出最小差异,然后批量进行patch,这种操作比起粗暴的直接操作dom,性能要好上很多。
  • 2、无须直接操作dom,可以极大的提升开发效率。
  • 3、跨平台。如服务端渲染,移动端开发。

缺点:

  • 无法进行极致优化: 虽然虚拟 DOM + 合理的优化,足以应对绝大部分应用的性能需求,但在一些性能要求极高的应用中虚拟 DOM 无法进行针对性的极致优化。

# 2、diff算法(差分算法)

  采用diff算法比较新旧节点时,只会在同层级进行,不会跨层级比较。

Last Updated: 6/4/2020, 10:31:46 AM