虚拟DOM

本文介绍了Vue中如何利用Snabbdom库创建虚拟DOM,以提高性能。虚拟DOM通过对象形式模拟真实DOM,减少直接操作DOM的开销。文章详细阐述了虚拟DOM的优点,如通过diff算法比较两个DOM树的差异,仅更新变化部分,以及patch函数在首次渲染和更新时的角色。此外,还讨论了patchVnode过程,包括新旧vnode的比较和更新。
摘要由CSDN通过智能技术生成

vue中创建虚拟DOM需要引入Snabdom库

什么是虚拟DOM

在vue中使用的是MVVM数据双向绑定模式,这样由于数据的变更视图实时更新,会导致大量的操作DOM节点,为了优化操作,使用对象的形式模拟真实的DOM节点,以减少对真实DOM的操作。对象中包含三个属性:tag、props、children

虚拟DOM的优点

虚拟DOM会比较两个DOM树中的不同,只渲染发生改变的节点

diff算法

在vue中只会比较同一层次的节点,不会跨层比较,这样就减少了深度遍历dom树所花费的时间

创建vnode

vnode函数返回一个对象,当执行h函数之后会生成对应的vnode对象,保存在对应变量里

patch函数

在首次页面渲染的时候执行一次patch函数,将vnode放入一个空的容器中

当有新的vnode需要替换时,就用patch函数替换旧的vnode

  • 当旧的vnode不存在时,先创建一个空的容器
  • 判断新旧的标签名和key是否一致,若一致就执行pathchVnode,若不一致,创建一个新的DOM元素并插入,最后删除旧的vonde
  • patchVnode,把旧的vnode元素赋值给新的Vnode的元素
  • 判断新旧vnode的孩子是否相同,不同就更新。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值