凌晨2点,Dan仍坐在电脑桌前,表情庄重。

作为React社区最出名的布道者,此时正遭逢一场不小的变故 —— 他领有38w粉丝的推特账号被影子封禁了。

所谓影子封禁,是指粉丝无奈在流中刷到被封禁者的任何推文,只能点进被封禁者的账号能力看到新推文

RSC(React Server Component)个性公布后,Dan常常用这个账号科普各种RSC常识。这次封禁,显然对他的布道事业造成不小打击,不得已只能启用新账号。

尽管新账号粉丝不多,但值得宽慰的是 —— 这篇题为The Two Reacts的RSC布道文数据还不错。

这篇文章通过解释世界上存在2个React

  • 在客户端运行的React,遵循UI = f(state),其中state是状态,是可变的
  • 在服务端运行的React,遵循UI = f(data),其中data是数据源,是不变的

来论证RSC的必要性(他为服务端运行的React提供了底层技术支持)。

宁静的夜总是让人思路良多,Dan合上MacBook Pro,回想起当年加入行业会议,在会议开始前一周才实现演讲所需的Demo(也就是Redux的雏形)。也正是以这次参会为契机,他才得以退出Meta伦敦,进入React外围团队

随后,Dan又回想起在React Conf 2018介绍Hook个性时,台下观众惊喜的欢呼。

想到这里,不禁又感叹 —— 已经并肩战斗的战友们都已各奔东西。

Redux的联结作者Andrew Clark来到了(入职Vercel),Hook的作者sebastian markbåge也来到了(入职Vercel),连本人最终也来到了(入职bluesky)。

尽管React仍是前端畛域最热门的框架,但一些奥妙的货色仿佛在缓缓变动,是什么变了呢?

收费支付卡颂原创React教程(原价359)、退出人类高质量前端群

React正迎来本人口碑的拐点

作为一款11岁高龄的前端框架,React正迎来本人口碑的拐点。

近期,有多名包含出名库作者、React18工作组成员在内的社区外围用户公开表白了对React的批评,比方:

  • Increasingly miffed about the state of React
  • Kind of annoyed at React
  • React, where are you going?
  • The decline of React
  • Concatenating text

有人会说,React从诞生伊始至今从不乏批评的声音,有什么少见多怪的?

这其中的区别其实十分大。从React诞生伊始至今,批评通常是开发者与React外围团队的理念之争,比方:

  • JSX到底好不好用?这是理念之争
  • Class Component还是Function Component?这是理念之争
  • 要不要应用Signal技术?这还是理念之争

尽管开源我的项目都很器重开发者的反馈,但React曾经不能算是一般开源我的项目,而是一个宏大的技术生态。

在这个生态中,开发者的不满实际上并不会波动React的根本盘。因为决定开发者是否在我的项目中应用React的,并不是开发者本身好恶,而是公司考量技术生态后作出的自上而下的抉择。

所以,React的根本盘是技术生态(而非开发者)。而形成技术生态的,则是生态中大大小小的开源作者/开源团队。

这一轮对React的批评,多是核心技术生态的参与者收回的,他们才是撑持React大厦的一根根柱子。

批评的次要起因是 —— React团队React的倒退与一家商业公司(Vercel)牢牢绑定。

这对于React外围团队成员来说,是从大厂到独角兽的集体职场跃迁。但对宽广React技术生态的开源作者/开源团队来说,则是被动与一家商业公司(Vercel)绑定。

举个例子,RSC中有个叫Server Actions的个性,用于简化在服务端解决前端交互的流程。Vercel是一家云服务公司,旗下的Next.js反对Server Actions能够完满符合自家Serverless服务的场景。

但其余开源我的项目可能并不会从这个个性中受害。

再比方,React Bricks的作者曾埋怨 —— 尽管外表上看,React能够与Vite联合,能够与React Router联合(也就是Remix的前身),一切都是自在的抉择。但下层的服务商示意:如果React Bricks不能反对Next.js,就不会再应用他。

换句话说,React在逐步将本人的技术生态迁徙到Next.js,而技术生态是公司技术选型的首要思考因素。如果开源库不被动融入Next生态,公司在做技术选型时可能就不会思考这个库。

迫于市场的考量,会有很多原React生态下的库迁徙到Next生态,即便这么做并非库作者志愿(毕竟Next.js的背地是一家商业公司)。

框架作者的镇压

如果说个别的开源库只能被动抉择是否追寻Next生态,那还有一类开源库抉择与Next.js侧面反抗,这就是Meta Framework(元框架)。

所谓元框架,是指基于前端框架封装的性能更全的下层框架,比方:

  • 框架Vue,元框架Nuxt.js
  • 框架React,元框架RemixNext.js
  • 框架Solid.js,元框架SolidStart
  • 框架Svelte,元框架SvelteKit

还有些框架自身就是元框架,比方AngularAstro

NPM年下载量看,Next.js对这些竞品根本呈碾压之势(下表绿色是Next):

造成以后场面有多少是因为Next.js相比其余元框架体现更杰出咱们不得而知,但有一点能够必定 —— React生态Next生态的迁徙对造成以后场面肯定奉献了不少。

参考下图,黄色(React年下载量)对绿色(Next年下载量)的提携:

元框架的竞争曾经逐步白热化,当初甚至呈现了生成元框架的框架 —— vinxi。

你能够抉择框架(ReactVueSolid...),再抉择利用场景(客户端、SSRSSG...)以及一些个性化配置,vinxi会为你生成一个独属于你的元框架。

顺便一提,SolidStart就是基于vinxi构建的。

后记

React将技术生态向Next迁徙的不满在社区曾经酝酿已久,并在近期迎来了暴发。短暂来看,这种不满必将影响React的根基 —— 技术生态。

但从上帝视角来看,没有人是真正在意React的:

  • 开发者只在意是否能稳固、高效实现工作
  • 开源作者只在意技术生态市场是否够大(不能被多数公司垄断)
  • React外围团队成员在意的是本人的职业前景
  • 元框架作者在意的是从Next无奈顾及的细分场景切一块蛋糕

React就像一个被开采了11年的金矿,开采的各方都有所埋怨,同时又不停下手中挥动的铁镐。

React将技术生态逐步迁徙到Next生态后,React的身影将只存在于一些细节中,比方:

  • Hook的执行程序不能变
  • 严格模式下组件会render两次
  • 相比其余框架更低的性能

作为一家商业公司,将来Vercel会不会为了市场考量逐步优化这些个性(比方引入Signal)?

如果说React将来肯定会隐没,那他的死必不会像烟花那样猝不及防而又璀璨(就像谷歌发表研发Angular2后,Angular1在关注度最高时迎来了他的死亡)。

更可能的状况是像忒修斯之船一样,在航行的过程中一直更换老旧的木条,最终在悄无声息中逐步隐没......