Vue和React中的diff算法核心

虚拟DOM
  • js对象替代真实DOM, 更改避免回流(重新渲染),一次性通过render函数渲染成真实DOM
  • 声明的样子file
  • 输出的样子file
实现render函数生成真实DOM
  • 设置属性file
  • render函数file
  • 渲染函数file

diff算法

  • diff算法其实就是对DOM进行different比较不同的一种算法(虚拟的比较更节约性能) __ 补丁:用来更新DOM的任务__
比较原则
  • 平级对比
    • file
  • 不跨级对比(无A__删除__A)file
  • 同级复用
    • file
遍历规则
  • 先序深度优先遍历(从根节点向下级子节点遍历)
    • file
    • 125叫广度优先
    • 12345深度优先
实现diff函数
  • 比较思路规则
      1. type相同,比较属性,属性不同生成补丁包patch{type:'ATTRS',attrs:{class:'xx'} }
      2. 新节点在原DOM中不存在{type:'REMOVE',index:xxx}
      3. 节点类型不同,直接替换{type:'REPLACE',newNode:xxx}
      4. 文本变化{type:'TEXT',text:'xxx'}

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值