• 由普通的js对象来描述DOM对象
    • 创建虚拟dom开销比真实dom小很多、
    • 真实dom无法跟踪状态,新创建全部DOM
    • 虚拟DOM作用
      • 维护视图和状态关系
      • 复杂视图情况下提升渲染性能
      • 跨平台
        • 浏览器平台渲染DOM
        • 服务端渲染SSR
        • 原生应用
        • 小程序等
    • 虚拟DOM库
      • snabbdom
        • vue2.x内部使用的是改造的snabbdom
        • 通过模块可扩展
        • 源码使用TS开发
        • 最快的虚拟DOM库之一
      • 通过模块扩展功能
        • attributes
        • props
        • dataset
        • class
        • style
        • eventlisteners
      • 导入模块
      • init中注册模块
      • h函数第二个参数处使用模块
      • patch
        • 把新节点中的变化的内容渲染到真实dom,返回新节点,作为下次处理的旧节点
        • 对比新旧VNode是否删除
        • 如果不是相同节点,删除之前的内容,重新渲染
        • 如果相同,判断新VNode是否有text,如果有并且和OldVnodetext不同,替换
        • 判断是否有子节点,对子节点对比
      • Diff算法
        • 最麻烦查找两棵树上每一个节点的差异
        • snbbdom 优化只比较同级节点 减少比较次数