
获得徽章 0
赞了这篇文章
赞了这篇沸点
新文章:“使用ImageDecoder API让GIF图片暂停播放” -
www.zhangxinxu.com ImageDecoder是浏览器支持的原生API,可以对GIF动图进行逐帧解析渲染,播放控制,图像处理,水印添加等,都不在话下。
4
11
赞了这篇沸点
赞了这篇文章
赞了这篇沸点
这是在讶羽大佬的群里问 AI 的回答,就目前来说在专业知识领域,AI 还是在胡说八道。
我对这个 “为什么 React 的 Diff 算法不采用 Vue 的双端对比算法?” 问题再次作了一个小小的总结:
Vue2、Vue3 的 Diff 都有双端对比,都是两边往中间靠拢,Vue2 多两个首尾,和尾首的比较,剩下的部分 Vue2 和 Vue3 的处理就不一样了,剩下的部分 Vue3 就采用最长递增子序列算法处理,Vue2 则是暴力地一个一个处理。
React 的 Fiber 是一个单向链表结构,简单来说,就是只能从左往右处理,先处理简单的情况,处理完了,剩下的部分跟 Vue2 一样,也是暴力地一个一个地处理。
在这个过程,key 除了用来比较新旧节点是否相同之外,还有一个重要的作用,无论 Vue2、Vue3 还是 React 在处理完简单的部分之后,剩下的复杂部分,都是通过 key 来进行以空间换时间的操作,如果没设置 key ,则需要O(N²)的时间复杂度,有了 key 之后,就单单确定新老节点这一环节的时间复杂度直接变成了 O(1)。
此外,Vue 和 React 的 diff 都是自上而下,深度优先,我以前也曾在掘金上写过一篇文章专门探讨过这个问题。
本人水平有限,如有错漏,欢迎各路大神斧正。
文章地址:
juejin.cn
我对这个 “为什么 React 的 Diff 算法不采用 Vue 的双端对比算法?” 问题再次作了一个小小的总结:
Vue2、Vue3 的 Diff 都有双端对比,都是两边往中间靠拢,Vue2 多两个首尾,和尾首的比较,剩下的部分 Vue2 和 Vue3 的处理就不一样了,剩下的部分 Vue3 就采用最长递增子序列算法处理,Vue2 则是暴力地一个一个处理。
React 的 Fiber 是一个单向链表结构,简单来说,就是只能从左往右处理,先处理简单的情况,处理完了,剩下的部分跟 Vue2 一样,也是暴力地一个一个地处理。
在这个过程,key 除了用来比较新旧节点是否相同之外,还有一个重要的作用,无论 Vue2、Vue3 还是 React 在处理完简单的部分之后,剩下的复杂部分,都是通过 key 来进行以空间换时间的操作,如果没设置 key ,则需要O(N²)的时间复杂度,有了 key 之后,就单单确定新老节点这一环节的时间复杂度直接变成了 O(1)。
此外,Vue 和 React 的 diff 都是自上而下,深度优先,我以前也曾在掘金上写过一篇文章专门探讨过这个问题。
本人水平有限,如有错漏,欢迎各路大神斧正。
文章地址:
展开
评论
5
赞了这篇文章
赞了这篇文章
赞了这篇沸点
35
10
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇沸点
赞了这篇沸点
耗时2年!仿各大博客网站 搭建自己的博客网站
www.onebook.vip 易抒网
支持【文章发布】【私信】【评论】【速转】【个人装扮】【图片上传】等常用功能
同时,内测版仿炉石传说【英雄传说】也已更新 目前仅供个人测试,有兴趣的可以注册玩一玩 但是BUG很多
连接
www.onebook.vip 该游戏仅供个人学习!
支持【文章发布】【私信】【评论】【速转】【个人装扮】【图片上传】等常用功能
同时,内测版仿炉石传说【英雄传说】也已更新 目前仅供个人测试,有兴趣的可以注册玩一玩 但是BUG很多
连接
展开
8
11
赞了这篇文章