React 纪录片心得 2 — 社群驱动创新

2023年2月11日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

《React 纪录片心得1 — 重新思考最佳实践》一文中谈到,React 在刚发表时,不论在 Facebook 内部,或是在 JavaScript 的开源社群,都曾受到反弹。然而十年过去的今天,React 是如何从过街老鼠转身华丽成为前端社群中最多人用的开源套件之一?本篇我们将会继续《React.js: The Documentary》的第二部分摘要与心得。

早期采用者出现

虽然在 JSConf 发表后,几乎整个 JavaScript 社群都在唾弃 React,当时仍是有一小部分的人,对于 React 提出的新的思考方式感到有兴趣。那时在 Khan Academy 工作的 Sophie Alpert,因为 Khan Academy 的网站遇到了开发上的瓶颈,而 React 这种以元件出发的思考方式,正好可以解决那些问题,于是她着手尝试用 React 改写代码。

用 React 重写后,代码变得更易读也更好维护,她也将该代码部署到生产环境中,这成为第一个 Facebook 之外把 React 代码部署到生产环境的企业案例。在那之后,Sophie 也开始贡献到 React 的开源之中,包含帮忙修 React 的 bug、帮忙写文档,以及回答社群中其他人的提问。

因为有 Facebook 以外的人把 React 代码部署到生产环境,让本来失去希望的 React 团队重新开始有了信心,开始相信不是 React 不好,而是没有足够好的沟通,让社群中的人理解 React 的好。这层理解让 React 团队开始专注在对外的沟通与文档的撰写。

到了 2013 年底,JavaScript 社群中有另一场盛会 — JSConf EU。有了前一次在 JSConf 的惨痛经验,当时 React 团队中没有人想再去 JSConf 分享,但因为 Facebook 有赞助 JSConf,所以需要有人上去分享,在没人想当讲者的状况下,Pete Hunt 自愿当分享的讲者。当时的那个演讲,是后来很有名的《React: Rethinking best practices》

在这个短讲中,Pete Hunt 强调 React 的不同之处,强调为什么 React 是个有趣的专案,这引起了一些人的兴趣,社群中的回应也开始有了反转。举例来说,在函式编程社群中小有名气的 Brandon Bloom,看到 React 以函式编程的思考模式重新看 UI 的开发,让他在 Twitter 上自主为 React 做宣传。

而在这些社群声援中,David Nolen 写的《The Future of JavaScript MVCs》一文受到了广大回响,大家开始体认到 React 带来的好处,让社群中多数人的想法从「我这辈子绝对不会用 React」转变成「也许我该试试看 React」。

科技巨头采用 React

时间推移到 2014 年,那时开始有更多公司使用 React,甚至像 Netflix 这般的科技巨头也开始使用 React。对于科技巨头来说,做错技术决策的成本会被放大好几倍,所以会更谨慎考虑是否采用一项新技术,因此 Netflix 使用 React,可以说是 React 的一个新里程碑。

Netflix 采用 React 的一个重要原因在于,因为现代网页应用程式的迭代速度变快,特别是 Netflix 开始有越来越多竞争对手,因此需要有一个方法让新的功能与改版更快推出到消费者面前。刚好在这个时间点,React 在社群中累积出一些动能,这让 Netflix 的开发团队思考采用 React 的可能性。

于是他们做了一个内部测试,在 Netflix 首页的改版中,让两组人分别去打造新首页的原型 (prototype),一组人用当时热门的 Backbone.js,另一组则是用 React。结果是用 React 的那组人,明显在开发速度、代码可维护程度、代码可测试度上都做得更好,这让他们决定采用 React。到了 2015 年,Netflix 甚至在自家的技术部落格发表《Netflix Likes React》一文,也因为有科技巨头的公开支持,React 从大家愿意尝试,变成越来越多人拥护,甚至开始有人在社群中提议说要办 React 专属的会议。

拥抱社群的力量

2015 年 React 在社群的评价已经截然不同, React 开办了第一场 React Conf,门票在短时间内被秒杀抢光。社群中也越来越多人贡献,其中包含现在广为人知的 Redux 创作者 Dan Abramov 与 Andrew Clark。

React 的迷人之处在于它没有给一个标准答案,而是让社群去发展出不同的解决方案。以状态管理来说,当时 Facebook 提出了 Flux 的设计模式后,在同一时间有好几个不同的社群套件都依照 Flux 模式发展出状态管理工具,而最终 Redux 在这些工具中脱颖而出。

这不是由 Facebook 的团队去推动,而是由社群的力量去发展出的。当时 React 社群发展出一种独特且迷人的氛围,在社群中的人觉得这东西太酷了,我想要参与在其中、我想要贡献到其中。 React 核心团队的 Sebastian Markbåge 提到 React 没有把很多东西放到 React 当中是有意为之的,因为想让这个生态系去贡献并驱动创新。

纪录片心得总结 — 感谢前人的努力

纪录片停在此刻。回头看 React 的创作者 Jordan Walke 以及许多早期参与 React 的开发者都已不在核心团队,但过去的那些努力,都是让 React 得以成为今天的 React 所不可或缺的。

我自己是 2019 年接触 React 的,那时 React 已经是最热门的 UI 套件之一,而且已经从 Class Component 迁移到 React Hooks 的新典范。因此我对于这些发生在早年的 React 故事相当陌生,很感谢能有这支纪录片带着我回顾这一切,也很感谢 React 团队与社群的努力,特别是在那些不被看好的时候,仍然愿意坚持着,让身为 React 开发者的我能够享有这些丰盛的果实。

我自己看完这个纪录片后最有感触的三个点,第一个是创新真的不容易,即使好的东西,不是一推出就可能受到大家喜爱,很可能会收到许多批评与质疑。但假如你真的坚信这是好的,持续努力、持续优化、持续沟通,当好的点能够被大家理解时,就可能像 React 一样翻转大家对它的态度。

第二个是做技术决策一定要有长远的思考。不论是当时 Facebook 的 CTO 支持长远决策所以让 React 得以被继续推动;或是 Netflix 团队决定采用 React,他们在思考时都是以长期的角度出发。即使这样做有短期的成本,但如果在长期有更大的好处,短期的成本也是值得的。

第三个是在设计上刻意保留让他人发挥的空间。 React 在设计上刻意没有规范说某些东西应该怎么做,这反而让社群能够发展出很多官方甚至没有想到的成果。在技术的世界,本来就不会只有一种最佳解,能够做到百花齐放就需要在最开始设计出让百花能够齐放的空间。

以上两篇是今天看完《React.js: The Documentary》 的心得,最后再次强烈推荐大家有空可以看一下,真的是精彩又让人有许多学习与反思 🙂

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們