diff算法和虚拟DOM

        虚拟DOM 描述元素和元素之间的关系 创建一个JS对象

        如果组件内有响应的数据 数据发生改变的时候 render函数会生成一个新的虚拟DOM 这个新的虚拟DOM会和旧的虚拟DOM进行对比 找到需要修改的虚拟DOM内容 然后去对应的真实DOM中修改

        diff算法 就是虚拟DOM的比对时用的 放回一个patch对象 这个对象的作用就是存储两个节点不用的地方 最后用patch里记录的信息进行更新真实DOM

        步骤            

            1. JS对象表示真实的DOM结构 要生成一个虚拟DOM 再用虚拟DMO构建一个真实DOM时 渲染到页面

            2. 状态改变生成新的虚拟DOM 跟旧的虚拟DOM进行对比 这个比对的过程就是DIFF算法 利用patch记录差异

            3. 把记录的差异用在第一个虚拟DOM生成真实DOM上 视图就更新了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue和React都是流行的前端框架,它们在实现上有很多相似之处,但也有很多不同之处。其中,最明显的区别就是在处理视图更新时采用的不同的数据绑定方式和不同的虚拟DOM实现。 Diff算法: Vue采用的是双向绑定机制,即当数据发生变化时,Vue会自动更新视图,这是通过Object.defineProperty()实现的。Vue的更新机制是基于依赖追踪的。当数据发生变化时,Vue会重新渲染视图,并使用Diff算法来计算哪些元素需要更新,Diff算法的核心是比较新旧虚拟DOM树的差异。 React采用的是单向数据流机制,即当数据发生变化时,React不会直接更新视图。相反,React会创建一个新的虚拟DOM树,然后使用Diff算法比较新旧虚拟DOM树的差异,并且只更新发生变化的节点。React中的Diff算法被称为Reconciliation算法,它是基于两个假设:1.相同类型的组件会生成相似的树形结构;2.不同类型的组件会生成不同的树形结构。 虚拟DOM: Vue的虚拟DOM是轻量级的,只包含必要的信息,比如标签名、属性和子节点等。Vue中的虚拟DOM是通过render()函数生成的,它是一个JavaScript对象。当数据发生变化时,Vue会重新生成一个新的虚拟DOM树,并使用Diff算法比较新旧虚拟DOM树的差异。Vue中的虚拟DOM只关注视图和数据之间的关系,而不关注其他方面,比如事件处理等。 React的虚拟DOM也是一个JavaScript对象,但它比Vue的虚拟DOM更加完整和复杂。React的虚拟DOM包含完整的组件层级信息、组件状态和事件处理等。当数据发生变化时,React会重新生成一个新的虚拟DOM树,并使用Diff算法比较新旧虚拟DOM树的差异。与Vue不同,React的虚拟DOM不仅关注视图和数据之间的关系,还关注其他方面,比如事件处理等。 总的来说,Vue和React在Diff算法虚拟DOM的实现上有所不同。Vue采用的是双向绑定机制,它的虚拟DOM只关注视图和数据之间的关系;React采用的是单向数据流机制,它的虚拟DOM包含完整的组件层级信息、组件状态和事件处理等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值