记一次看diff源码如何操控虚拟DOM

由于第一次看diff源码 激发了本人的贼大的好奇心 心想哇塞 准备要看diff了 好激动 总结了以下几点(不喜勿喷哈)先https://github.com/snabbdom/snabbdom.git 克隆一下地址 因为diff也是依赖于snabbdom这个东东来操作虚拟DOM的 所以我们先下载源码看看具体情况如何:

首先下载好印入眼前的是一群庞大的文件

都是TS大神啊~我只是个菜鸡
根据以往经验 我们先看看snabbdom文档:snabbdom里有个h 返回了个函数Vnode
在这里插入图片描述
代码的结尾返回了一个vnode函数 其中 sel data children text 都是Vue函数里比较重要的,然后看看Vnode.ts里的代码
在这里插入图片描述
Vnode里 返回了 这么一个数据 其中elm 就是Vnode对应的DOM
在这里插入图片描述
由上面我们还得知 与Vnode有关联的 还有一个patch 代码里导出了一个init函数 ;而init函数返回了一个叫patch的函数(snabbdom.ts)
在这里插入图片描述
在这里插入图片描述
而Patch函数里 的第一个if判断式的意思是:判断文档里的 patch(container(dom元素),vnode) 里的第一个参数是不是vnode
如果不是创建一个空的vnode,关联到这个DOM元素 emptyNodeAt函数里创建一个空的Vnode 和elm(对应的DOM)做一个绑定
在这里插入图片描述
而第二个if判断 判断了新的vnode 和旧的Vnode是不是都相等(key和sel都相等)函数sameVnode里的结构是这样的:
在这里插入图片描述
而判断里 还有个及其重要的函数 patchVnode 就是用来做 Vnode的对比来看看patchVnode 里的结构:
在这里插入图片描述
然后就是updateChildren:
在这里插入图片描述
由于有大量注释,所以就不做多解释了~反正是给我自己看的~~~~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值