在Web客户端开发中,关于哪一个框架最优秀的问题经常引发情感化的讨论。主要的三个流行框架是Angular、Vue和React,但除了这三个,还有很多其他较小的框架,如Svelte。与其他软件开发领域类似,框架的选择没有明确的“最佳”或绝对的“对错”,每种框架都有其优缺点和适用场景。因此,React只是众多选择中的一个,它并不是唯一的解决方案。
然而,React在其功能、架构和理念上有着非常明确的目标。React的重点是用户界面设计,因此在开发过程中,这个库将给予你自由设计前端开发的所有权限。与其他框架类似,React建立在组件架构的基础上。但React组件非常轻量:在最简单的情况下,组件仅仅是一个返回特定类型数据的函数。
React的另一个特性是,它不像Angular那样有预定义的架构。诸如依赖注入(dependency injection)或服务(services)这样的概念在React中并不存在。你可以根据应用程序的需求自由设计自己的应用程序架构,React会在这个过程中提供支持,但不会强制要求你遵循某种严格的规范。然而,这并不完全是一个优势,因为它会让初学者在学习React时感到迷茫。正因为如此,React团队和社区都在努力让新开发者更容易学习React并在生产环境中使用这个库。
React遵循语义版本控制方法进行版本管理。但与其他开源项目不同,React并没有一个固定的发布周期,例如React你会每六个月就发布一个新的主版本更新。
语义版本管理
在语义化版本控制方法中,项目的版本号由三组数字组成,使用点号分隔。因此,版本号的格式为X.Y.Z。版本号通常从0开始,并且没有上限。
版本号的第一组数字称为主版本号。当项目中引入了破坏性更新时,也就是需要对程序源代码进行调整,程序才能继续运行的更新。主版本号会增加,例如,在React中,版本16引入了Fiber调和器等新特性。
版本号的第二组数字称为次版本号,用于新增功能的更新。例如,在16.8版本中,引入了作为函数组件扩展的钩子函数。次版本发布的一个重要特点是应用程序仍然可以在源代码不作更改的情况下继续运行。
最后一个数字是补丁版本号,用于修复错误。这类版本发布相对较为频繁,通常不会引法任何问题。
React开发者非常谨慎地将破坏性更新(即重大更新)保持在最低限度。这一点也反映在最近几个主要版本发布的频率上:React 15发布于2016年4月,版本16发布于2017年9月,React17发布于2020年10月,而React 18则于2022年3月发布。
如果接口需要更改,例如类组件的生命周期发生变化时,这些更改不会直接引入到下一个版本中,同时也不会立刻停止对前一个版本的支持。相反,在这种情况下,之前的方法会被重新命名,并在过渡期内可以继续使用。对于某些定制更新,React的开发者提供了Codemods这个工具,这是一个用于自动化更新源代码的工具。我们将在第二章中更详细地介绍这个工具。此外,React团队还使用了弃用策略。这意味着团队会给出库中将来会被移除的内容,以便所有开发者都能收到警告,并可以进行适当的代码重构。