React 的清算:行业正在摆脱单一文化吗?

十多年来,React 一直是前端开发的引力中心。它将 Web 从静态页面的集合转变为高度交互式应用的世界,向行业引入了声明式 UI 和基于组件的架构的力量。但近年来,一种明显的观点转变正在出现。

从备受瞩目的博客文章到 Hacker News 上激烈的讨论,越来越多的开发者和 CTO 开始质疑 React 是否已成为“那种把所有东西都看作钉子的锤子”。对话不再仅仅关于 React 是否“好”,而在于其统治地位是技术优越性的结果,还是网络效应和劳动力套利不断自我强化的循环。

反对巨头的理由

React 的批评者认为,该框架已演变成一个臃肿的生态系统,技术债务已植入其 DNA。不满情绪通常分为三类:性能、复杂性和治理。

1. 性能税

批评者中一个反复出现的主题是 React 应用的“重 JS”特性。许多人认为,Virtual DOM (VDOM) 和注水 (hydration) 模式——即服务器渲染 HTML,然后客户端用 JavaScript “重新注水”该 HTML——会导致用户体验迟缓,尤其是在低端硬件上。

"通过默认设置,你会遇到可怕的注水模式——在服务器上用 JavaScript 完成所有计算(耶!),立即提供 HTML(耶!耶!)……然后提供与服务器上完全相同的 JavaScript(诶——等等,什么?)"

一些团队报告称,通过转向原生 DOM API 或 HTML 优先的架构,他们获得了即时的收益。例如,据报道,Microsoft Edge 在转向 Web Components 和 HTML 优先的方法后,为低端硬件用户带来了显著的收益。

2. 认知负荷与“疯狂"

虽然 React 的心智模型曾因其简单性而受到称赞,但 Hooks 的引入以及随之而来的状态管理复杂性让许多人感到沮丧。关于 useEffectuseMemo 的争论已成为批评的焦点,一些人认为 React 让实现高性能解决方案变得过于困难。

批评者指出,编写 React 的“正确”方式正处于无休止的争论中,且 API 设计常被视为优柔寡断。这导致了一种局面,即开发者必须在“民间传说”和过时的模式中穿行,以保持应用的高性能。

3. 生态系统锁定与治理

Next.js 的兴起引入了新的紧张关系。虽然它为构建 React 应用提供了强大的框架,但一些开发者认为它已成为 Vercel 厂商锁定 (vendor lock-in) 的工具。此外,最近 React Server Components (RSC) 中的安全漏洞以及对这些披露处理不当的感知,引发了对项目治理的担忧。

反驳论点:为什么 React 仍然胜出

尽管面临猛烈的批评,React 仍然是行业标准,这是有原因的。支持者认为,“React 单一文化”实际上是稳定性和成熟度的标志。

生态系统的力量

对许多人来说,React 社区的庞大规模是其最大的特征。库、文档和庞大的经验丰富的开发者群体使其成为企业最安全的选择。正如一位评论者所言:“React 是除了我们尝试过的所有其他框架之外最差的 JS 框架。”

JSX 的优雅

即使是那些不喜欢 React 运行时 (runtime) 的人也经常承认对 JSX 的喜爱。在单个文件中结合声明式和命令式风格的能力被许多人视为 UI 开发中的突破。这种影响在 Astro 等其他框架中显而易见,它们采用了类似 React 的语法,同时避开了 React 运行时。

基于组件的理智

支持者认为,另一种选择——手动 DOM 操作——在复杂应用中是灾难性的。声明式、基于组件的方法允许开发者根据状态来描述 UI 应该 长什么样,而不是手动管理每一个状态转换。

替代方案:开发者正在走向何方?

随着“胖客户端”时代的开始衰退,开发者正在探索各种前进的路径:

  • 极简主义者: 转向 HTMX、Hotwire 或 vanilla JS 以减少 JavaScript 负载并回归服务器端渲染。
  • 编译器爱好者: 转向 Svelte 或 Solid.js,将“工作”从浏览器转移到构建步骤的编译器中,从而消除对 Virtual DOM 的的需求。
  • 函数式主义者: 采用 Elm 为其严格的类型系统和可预测的状态管理 (The Elm Architecture)。
  • 务实主义者: 使用 Vue 或 Angular,利用其更具主见性的结构和内置优化。

结论:后 React 时代?

行业是否正在进入“后 React”时代?也许在市场份额方面并非如此,但肯定是在智力统治地位方面。对话已从“我该如何学习 React" 转向“我是否真的 需要 React 来进行这个项目?”

对于工程领导者,教训是显而易见:因为“每个人都懂它”而选择 React 的本能反应可能会创造出超过招聘便利性带来的收益的技术债务。Web 的未来可能不是一个单一的主导导向框架,框架的工具选择将基于项目的约束,而非生态系统的惯性。

Sources