全职学习三年React源码是什么体验
细数起来,我学习React源码现已超越三年了,平常作业的大部分内容便是读和写React和React周边库源码,然后做成课程,接下来和大家共享下这三年的感触和收成。
关键
关键很简略,三年前我找了一个讲师的作业,当然并不是由于热爱和寻找梦想,而是由于一个在某教育组织作业的初中同学和我说“程序员讲师赚的很多,做得好的话,一年XX万没问题”,然后我面试讲师职位通过了,就入职了。
入职前,我还想着做大做强,可是入职之后的一周,我的目标便是保住作业,一个月之后,由于作业强度和自身的缺乏,我随时有被裁掉的心理准备。
为什么讲React源码
在担任React讲师之前,我现已作业五年了,做过很多很多项目,从最早的C#,到jQuery,到React和React Native,再到Vue,并且自认只需需求合理,没有做不出来的,无非是了解的做的快点,不了解的多花点时刻调研(百度)。做讲师的话,把这些教给学员就行了。
可是现实很骨感,我做了个简略的商城项目,做之前计划作为课程项目的,可是做完之后,发现这可怎样讲,课程是直播,我要是一行行敲代码还要解说,两个小时的时刻也就只能做两个简略的页面,还全是一些API的调用,底子没时刻讲原理,这样导致的结果肯定便是没根底的学不会,有根底的会吐槽太简略。
最终,我仍是回到了本来的课程纲要,体系解说,不求精密,不写css,页面能够丑一点,把时刻花在逻辑解说上。
我准备了很长时刻,第一节课讲的Context和Form,很正式,结果看了眼谈论区,没有一个人说讲的好坏,反而都是说“教师声音真好听”。。。
如何入门React源码
其实之前做开发作业的时分,我也会时断时续的看一些原理源码,自己觉得把握的还能够,可是真的到了去做课程,发现“还能够”便是不及格,“还能够“就意味着好多说不明白,讲课的话,这可远远不行,究竟课程纲要里都是手写各种库的源码。
所以,每次上课前我都会花很长时刻去精密研讨每个库,从最简略的AntD3 Form,到Redux、React-Redux、Redux中间件、React-Router等,尽管这些曾经都用过,我曾经觉得自己把握的还挺好的,可是做课程便是把这些源码库在直播上写一遍出来。。。
直播最大的难度便是时刻的放大性,平常写代码出个bug花了五分钟处理,会觉得很快。可是直播的时分,被几百人围观,一分钟处理一个bug都显得很慢很慢。
最难的仍是React源码,由于太巨大了,刚开始看的时分有点像刘姥姥进大观园,我深深地置疑自己底子不会React。
不过万事开头难嘛,积习沉舟,梳理完知识图谱之后,再看React源码系列,就越来越觉得简略了。
学React源码有用吗
有用。
面试的用途就不用多说了,你肯定遇到过刨根问底的面试官,一个问题能问俩小时,可是如果你能手写的话,那面试的时分再讲原理简直是手到擒来。
还有便是项目中的用途,其实我在梳理React和周边库源码的时分,也发现了我曾经写项目时分的一些缺乏,比方我曾经乱用Router5的Route的children、render、component,由于分不清,也懒得分,反正用谁代码都能跑。看了源码之后发现,这三个特点真的不要乱用,彻底不一样,而且中文网文档对于这块的翻译有错误,离谱~
还有MobX5的中文网文档,之前也有翻译不太恰当的当地,详细忘了是什么,还记住我提了一个pr。
说回React自身,仔细去看源码的时分,发现规划的还挺好,尤其是使命调度,尽管这个模块的代码更新很少,可是看了之后,我发现曾经大学时分学的《操作体系》和《算法与数据结构》的课程,遽然有用了,遽然感触到了学以致用的欣喜。
说到这儿,回忆一下大学时分的《操作体系》课,杜教师讲的,是个很温柔的女教师,可是这个课给我的感觉便是我常常置疑我学它干嘛,当年仍是太年青。
React源码系列唤醒的不只是我曾经的《操作体系》课,还有《算法与数据结构》、《C言语》等,还有我不记住是否学过的《编译原理》。大学对我来说是个古怪的当地,如同学了很多东西,可是作业的时分发现如同都没用上,究竟我结业之后做的是前端,而大学不教前端,前端仍是我实习的时分自学的。可是后来发现,大学时分学的课都是我现在的基本功。比方我讲Hooks存储的单向链表结构的时分,很多不是计算机专业的学员会问“什么是链表”。
尽管现已结业很多年,可是我仍是很清楚地记住C言语教师讲指针的那节课,清楚到记住那天教师的发型和衣服,梳着低的长马尾,戴着眼镜,穿戴阔腿牛仔裤,裤子上有个史努比,她在黑板上画着指针指向图,说“你们刚开始学指针,或许听不懂,可是仍是要听呀”。我其时很苍茫,可是很听话地在仔细听讲。
现在学以致用了,感觉挺好,曾经的辛苦没白费。
学React源码的总结
学React源码之前,我觉得我学的是React,可是学过之后,发现结构只是表象,我真的在学的是表象下的本质。
昨天晚上作业完之后,我去看一个轻喜剧打发时刻,由于剧情比较傻白甜,看剧的时分感觉脑细胞无处可用,所以一边看剧,一边看前几天买的新书《程序员的自我涵养》,书的前面讲了操作体系的迭代,这简直不能说和React的迭代相关,只能说一模一样。。。
比方,你来读下《不要让CPU打盹》这一节,
“在计算机发展前期,CPU资源非常贵重,如果一个CPU只能运行一个程序,那么当程序读写磁盘时,CPU就空闲下来了,这在其时简直便是暴殄天物。”
“对于多道程序来说,程序之间不分轻重缓急,如果有些程序急需使用CPU来完结一些使命(比方用户交互使命),那么很或许很长时刻才有时机分配到CPU。这对于有些呼应时刻要求高的程序来说是很致命的,想象一下你在Windows上面点击鼠标10分钟之后体系才有反响,那该是多么懊丧的事。”
“经过略微改进,程序运行形式变成了一种协作的形式,即每个程序运行了一段时刻以后都自动让出CPU给其他程序,使得一段时刻内每个程序都有时机运行一小段时刻。”
这不便是React从Stack Reconciler到Fiber Reconciler的迭代嘛~
最终
当然,这三年我也不是只在学React系列,太单一了容易故步自封,同时也去讲了React Native的课,还有各种前端场景下的算法与数据结构,还做了一个低代码项目,如同这三年也挺忙。不过开发做久了,看什么都一样,不再是曾经刚做前端的时分,看到什么都“哇”一声。
最终的最终,羊了羊为究竟怎样玩,谁能出个攻略?