React 老矣,我建议大家用用别的框架


React 老矣,我建议大家用用别的框架

文章插图
 
如今,纵观各类招聘网站上的前端职位,大家往往都会看到一个熟悉的字眼:React 。虽然企业雇主也经常会列出其他一些类似的前端框架选项,但 React 的地位几乎是雷打不动 。
 
但面对这样的现实,请原谅我始终无法理解 。除了流行,React 到底还有什么优势?
 
首先我想澄清一点,我对 React 没有任何敌意 。我知道它挺好,而且如果需要开发庞大复杂的前端项目,我其实也并不抗拒使用 React 。
 
React 的出现,为其他框架当前及未来的功能规划奠定了基础 。Vue 3及其组合 API 明显是受到 React hooks 的启发 。Svelte 中的很多约定就来自 React 。至于我最喜爱的 Vue 框架 Nuxt,它的大部分设计思路都来自 React 的元框架 Next 。总而言之,整个基于组件的前端设计和开发模型,特别是目前的整个生态系统,都离不开 React 的鼎力支持 。
 
但就个人观点,我还是觉得 React 像是那种开创了流派的祖师级老电影、音乐专辑或者电子游戏 。它的伟大体现在那个时间点上的开创性,但时至今日自身的绝对价值其实已经很有限了 。
 
好吧,这话可能说得有点狠 。毕竟一提到开创性的老电影,大家首先想到的就是《公民凯恩》,React 跟其他框架间的差距肯定不像《公民凯恩》相较于后来的经典佳作那么大 。我的观点很简单:
 
React 已经老了,只是经常用它的朋友们还没有意识到它老到了什么程度、引发了哪些问题 。
如果只用 React,那可能会觉得这框架不错啊,而且一直在努力改进 。确实,React 在很多方面都是越来越好,但这并不能改变它的发展速度和功能上限已经长期跟不上同类方案的事实 。
总之一句话,React 表现得不错,只是不像其他框架那么好 。
 
工作中的最佳选项 
假设大家身为某家科技初创公司的 CTO,或者是打算开发某网络软件新产品的个人创业者 。
 
我们面前摆着新项目的蓝图,可以随意选择自己喜爱的技术进行构建 。没有约束,也不设产品生命周期限制,那么你会选择哪一种前端框架?
 
(有些朋友可能会抬杠说,不用前端框架也行 。但对于任何成规模、比较复杂的项目来说,不用前端框架肯定不是什么好主意 。)
 
要做出选择,先要考虑以下几项条件:
 
  • 性能
  • 学习曲线
  • 绑定包大小
  • 可扩展性
  • 社区与支持
  • 资金支持
  • 开发者体验
  • 人才供应
 
而有没有一种可能,从这么多角度来论证,其实 React 并不是什么好选择 。
 
下面咱们逐一探讨 。
 
性能 
大家可以通过多种不同指标来衡量性能 。但无论关注哪个具体方面,React 都称不上顶级水准 。Vue、Svelte、Solid、Inferno 等工具的性能总体上都要好于 React 。根据实际需求,大家甚至可以通过 Alpine 或者 Petite Vue 等让性能更上一层楼(虽然我觉得这两种跟其他框架并不算同一类方案) 。
 
React 的性能不佳应该已经是个共识,所以这里无需继续赘述 。所以我认为,如果大家希望让新项目拥有强大的性能表现,那 React 就可以直接被排除在外 。
 
学习曲线 
假设你对前端框架一无所知,那 React 也绝对不是最好学、最容易上手的选项 。
 
JSX的实质,就是笨拙地把 html 硬塞进 JAVAScript 函数返回 。你以为这就够糟了?不,更糟的是你在 React 里不用 JSX 。
 
除了 JSX,React 本身也有不少独特的约束和毛病(比如提供两种完全不同的语法,但二者完全无法互操作) 。
 
在 React 中,其他前端框架能够帮我们轻松打理的小事,往往还是需要手动干预或者借助大量样板文件(甚至二者兼有) 。
 
几乎每种前端框架都把用户设想成普通人,但 React 不同,它最早是专为 Facebook 的工程师们打造的 。虽然经过多年发展,它已经成为一种比较通行的市场化产品,但即使到现在,这样的出身仍然给 React 留下了深深的烙印 。我们还是可以看到其中留下的早期决策与优化痕迹 。


推荐阅读