如何给本书命名,是我一直非常纠结的事情。不过我的好朋友魔术师卡颂的一个源码公开课分享视频给了我灵感。
卡颂:React 源码贡献者,目前就职于字节跳动
在视频中,卡颂将大家对 React 源码的理解分为五个层次。
第一层:掌握术语、基本实现思路
第二层:掌握整体工作流程、局部细节
第三层:掌握关键流程细节
第四层:掌握思想
第五层:???
第五层他并没有明确是什么,因为卡颂觉得自己对于源码的理解,还无法达到那样的境界,不过看他视频里的意思,大概就是探索前端的边界,具备创造能力。
React 底层实现也确实愿景宏大,从历史的迭代中我们可以发现,React 开发团队,有一个操作系统梦。
2017 年 React conf 官方大会中,React Fiber 首次官宣,也就意味着,属于操作系统的某些概念已经正式被 React 搬入了前端领域。
在我的认知中,Fiber 一词最早出现在 windows 操作系统,翻译为纤程,是比线程更小的一个任务颗粒。在后续对 React Fiber 架构底层原理的学习过程中,果然也能够逐渐接触到更多操作系统相关的概念,例如任务调度,优先级队列等等。
除此之外,React 团队对于并发模式「Concurrent Mode」也有很深的执念,虽然还处于试验阶段,不过官方团队对于该特性的努力一直没有停止过。也许你在阅读该文章的时候,并发模式已经得到了正式的支持。
我想,这大概就是卡颂想要表达的创造与探索前端边界的境界。
当然,纯粹的源码学习,与运用 React 解决实际问题还是存在一些区别,本书的目的,在于指导大家能够熟练掌握 React 并运用 React 完成具体的项目,从这个角度出发,借鉴我喜爱的小说《将夜》,我将 React 水平分为五个境界。
第一境「初境」:初步认识 React,知道官网介绍过的大多数基础语法,懂得运用 React 创建组件,理解并懂得如何运用生命周期。
第二境「感知」:感知到组件化开发思维,能够运用 React router,React-redux 等社区维护的三方组件解决实际问题。
第三境「不惑」:孔子说的四十不惑,已经是一个非常高深的境界。指的是我们在面临选择时,已经不会有疑惑。我们能深刻明白自己需要什么,什么东西才是最适合我们自己的。在 React 的实践运用中,我们需要知道如何运用 React 解决不同的需求场景,也会常常遇到大量的决策问题,如何做出最适合当前技术团队的选择,是每一个 React 开发都需要不断思考的事情。因此,这个境界的 React 开发者能够结合实践做出最适合自己团队的技术决策,此为不惑境。
第四境「洞玄」:洞玄一词,出自道藏《道门大论》中,指的是修为已经达到了通透玄妙的境界。作为 React 开发者,达到这个境界的人,对 React 的理解已经非常深入,能够基本理解源码的运行逻辑,对 React 的使用已经信手拈来,面对不同的需求都能够轻松拿捏,同时也明白 React 的短板,能做到收放自如,知道如何顺应 React 的底层规则,编写性能更优秀,维护成本更低的优质代码。
第五境「知命」:我们经历了人生的起起落落,已经深刻明白很多事情并不能按照我们的期望发展,顺其自然,才是天命所归,一切都是最好的安排。能够做到不怨天不尤人。达到这个境界的 React 开发者,已经具备了丰富的实战经验,在需求定制之初,就能够敏锐的发现哪些需求能做,哪些不能做,哪些需要耗费大量的时间,哪些可以轻松完成。他们在工作中往往具备强大的预判和沟通能力,懂得如何预防各种意外 bug 的产生,出现了问题能快速定位并解决,不会轻易让自己陷入无谓的压力和痛苦之中。
本书不仅仅只是为了让大家学会 React,官方文档足以帮助大家初步了解并运用 React。我希望《React 知命境》能够帮助 React 学习者,具备解决实践场景的能力,并如愿达到知命之境,这正是本书命名的由来,他包含了本书的最终目标。