加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长资讯 > 评论 > 正文

React的操作系统梦

发布时间:2021-04-19 09:37:14 所属栏目:评论 来源:互联网
导读:代历程回顾 React Core Team从16年开始改造React的核心模块Reconciler(diff算法会在该模块执行)。 经过一年多的改造,将其从流程不可中断的「递归实现」(被称为Stack Reconciler)改为流程可中断的「遍历实现」(被称为Fiber Reconciler)。 在此之后,基于Fibe

代历程回顾

React Core Team从16年开始改造React的核心模块Reconciler(diff算法会在该模块执行)。

经过一年多的改造,将其从流程不可中断的「递归实现」(被称为Stack Reconciler)改为流程可中断的「遍历实现」(被称为Fiber Reconciler)。

在此之后,基于Fiber Reconciler,实现了一套可以区分任务优先级的机制,大体原理如下:

不同交互(用户点击交互/请求数据/用户拖拽...)触发的状态更新(比如调用this.setState)会拥有不同优先级,在源码内对应一个时间戳变量expirationTime。

React会根据expirationTime的大小调度这些更新,最终实现的效果为:「用户交互」触发的更新会拥有更高的优先级,先于「请求数据」触发的更新。

高优先级意味着该更新对DOM产生的影响会更快呈现在用户面前。

在此之后,React Core Team发现基于expirationTime的调度算法虽然能满足fiber树的整体优先级调度,但是不够灵活(比如无法满足局部fiber树的优先级调度(例如Suspense))。

具体原因见这篇文章:启发式更新算法

所以去年React Core Team的Andrew Clark将expirationTime模型重构为以一个32位二进制的位代表优先级的lane模型。果你是个React重度用户,让你聊聊这些年React的重大变化,可能你会说:

  • Context API重构
  • Hooks

但从我们上面讲到的内容来看,从16年到21年,React底层其实做了大量重构工作。

有人问:做了这么多重构,React开发者居然一点感知都没有?

是的,即使当前稳定版本的React底层已经支持时间切片、支持更智能的更新合并机制(batchedUpdates)。

但是React内部有很多裹脚布一样的代码让新架构的行为表现的与老架构(Stack Reconciler)一致。

React Core Team的执念

就像开发业务的开发者需要背负OKR,强如React Core Team成员,也会为OKR苦恼。

20年的React圣诞特辑,React Core team的Rachel Nabors小姐姐就在文章Inside the React Core team[2]中表示:

不能因为你没有产出就代表你没有价值(一把辛酸泪)。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读