昨天翻译了React
团队圣诞特辑的一篇文章《一块儿走进React核心团队》。前端
文章是好文章,能一窥大厂顶级开源项目团队的平常。细读后发现,从文章隐隐透露出做者:react
心情低落 —— 尝试开解本身 —— 开解成功后git
的心路历程。github
尤为是文末最后一句话:web
这意味着要有信念,不能由于你没有新的特性产出,就意味着你没有提供价值。性能优化
不论是大漂亮国的资本主义码农,仍是我这样的北漂渣渣码农,在这个快速成长的行业,心里都是颇有压力的吧?前端框架
前段时间有朋友给《React技术揭秘》提了PR
:关于effectList 单向链表的使用已经被react废弃掉了。markdown
昨天抽出时间决定去看看源码里effectList
为啥废弃了。架构
首先找到对应PR:app
再拉取最新的代码,奇怪的是此次改动在main
分支是不存在的。
blame
后发现,因为废弃effectList
后形成未知缘由的性能指标降低,在以下PR中又重置回以前的代码了。
你看,一来一去,Andrew老兄又是好几个没有提供价值的日日夜夜。
接下来是灌鸡汤时间。
在《一块儿走进React核心团队》一文中,做者提到两个点:
React
团队在18年曾和prepack
团队合做,寻求组件编译时性能优化的方案。
React
团队在15年尝试过经过worker
线程分案虚拟DOM
计算压力。
这两项尝试,都失败了。
可是,他们为Server Components
的出现提供了思路。
再谈谈我我的微薄的体会:
个人KPI
有一项是对项目性能优化。
当常规优化手段都试验事后,我开始从项目使用的前端框架Anu
下手。
Anu
是司徒正美老师开发的类React
框架,咱们团队从去年开始维护
在React
中,mount
时会先构建一整棵离屏DOM
树,再一次性插入页面。
而在Anu
中,没有区分mount
与update
。这意味着首屏渲染时会遍历,并对页面中的DOM
执行appendChild
。
咱们都知道,在各类《性能优化指南中》,都强调:使用离屏DOM
,减小页面中的DOM
操做,能够提升性能。
因而,在将Anu
渲染流程调整到和React
同样后,我惊喜的发现:性能指标没啥变化。
又是愉快的没有创造价值的一天。
不过,有了此次经历,对Anu
的总体架构更熟练了,后来我又尝试为Anu
加上Time Slice
。
如今,已经在愉快的跑React
单测了。
不少事情都是这样,按正常节奏去作,自己就是价值。
我作了这么多年前端,感受本身仍是好坑啊。因而去年的某一天,决定学了新东西后就写写学习笔记。
每周抽出时间写一篇文章,这不难吧?断断续续半年过去了,竟然凑出一本电子书React技术揭秘,反响还不错。
因此,朋友们,有想法,就去作,作事情自己就是创造价值,他会在将来某一天回馈你的。
毕竟不作怎么知道,涨再多工资也买不起房