diff算法解析

7 篇文章 0 订阅

 

需要看源码或视频再捋一捋

 

h函数

 

入参

  1. sel(标签 比如 ‘div’ )
  2. data(比如{key:’A’,className:’Aclass’} 节点等属性)
  3. children (子元素 比如[ h(‘div’), h(‘p’)] h函数返回是一个vnode节点  )
  4. text(字符串,也就是vnode内容)

snabbdom源码

 

只了解原理的话 手写个简易版的即可

h.js  作用生成虚拟dom节点vnode

 

vnode.js 返回一个虚拟dom节点对象

五个入参(1.标签 2.属性 3.子节点 4.文字内容 5.要插入的节点位置)

key 从属性中取出

 

 

这时候我们要生产虚拟节点都已经构建完成了 需要patch(更新dom)

以下为验证调用方法试例

 

 

 patch.js 更新dom节点

 

createElement.js 真正创建节点 将vnode创建为dom 是孤儿节点 并返回

patchVnode.js

UpdateChildren.js 新虚拟dom有children 旧虚拟dom也有children ====>> diff算法核心

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值