• ⼀个JS对象,渲染后能变成真实DOM

      • 我们可以理解虚拟DOM就是一个JS对象,这个对象描述了渲染成真实DOM的结构
    • 包含标签名、属性、事件、⼦元素等

    • 能减少不必要的DOM操作

      • 如果我们用一个for循环操作数据改变100次,只是相当于修改了虚拟DOM这个JS对象100次,当这一轮for循环操作完成了之后,才会根据虚拟DOM去改变真实DOM,如果没有虚拟DOM,直接去改变100次真实DOM,性能开销是很高的,会造成页面卡顿
      • 所以我们把直接去操作真实DOM变成了去操作虚拟DOM这个对象,操作好了之后,才去更新真实DOM。
      • 其实真实DOM这个对象,是特别大的,而虚拟DOM只有很少一部分数据,只是反映当前dom的一个核心的东西,很多无关的信息,他都是不包含的,所以操作起来也会快很多。
      • 得益于DOM Diff,我们只会修改有差异的部分,使对真实DOM的操作减少到极限。
    • 能跨平台渲染

      • 虚拟DOM是一个逻辑对象,可以根据不同的平台,展示出不同的效果。比如虚拟DOM可以渲染成微信小程序的格式,也可以渲染成支付宝小程序的格式。

    image.png