过年期间,回顾过去,彷佛觉得这一次有些不一样:或许,全栈的时期已经到来了。
React 与 Vue 生态系统比较
首先我们来看看 React 与 Vue 生态的明星走势比拟:

上图中,全体 React 生态的星星数量远超 Vue,第十名的星星数量比第一名的 Vue 还多,我们来分类一下:
排行
反应
Vue
用户界面
全栈
白板
演示文稿
全栈
后台管理系统
状态管理
钩
后台管理系统
用户界面
文档
文档
全栈框架集成
用户界面
全栈框架UI
框架
后台管理系统
用户界面
10
无做事器堆栈
状态管理
可以看到,React 的生态链基本已经成熟,险些每个种别都有库上榜,不再像 Vue 那样还在争夺 UI 框架的地盘。
从全栈角度来说,Vue 的第一名是全栈 Nuxt。
React 的 Next.js 虽然没有排在第一,但其有 4 个与做事端/全栈干系的内容,个中 serverless stack 排在第 10 位。其余值得把稳的是,React 还有做事端组件的观点。shadcn/ui 能排在第一是由于它是基于 headless UI Radix 实现的,也可以用在做事端组件中。因此,做事端/全栈在 React 中占了相称的比例。
从这个角度来看,前端走向做事端已经成为了一定趋势。
htmx框架的回归
再看框架端,htmx 位列星星趋势第二位,2023 年星星增长了 15.6K,与排名第一的 React 相称靠近。
而且htmx也是今年谈论最多的。
我经历过前后端不分离的阶段,用jsp来天生前端页面,js更多的是一个炫耀页面技巧的工具,后来jQuery+Ajax被广泛利用之后,才有了真正的前后端分离的项目。
htmx的涌现可能在不理解的人看来是向Java+jQuery+Ajax前后端分离的回归,但是我写完例子之后创造实在是向前后端不分离的阶段的回归。
不管你用 Java,还是天下上最好的 PHP,还是现在的 NodeJS 做事,你都可以访问 HTML,只须要在做事端返回 HTML 就可以了。
/ nodejs fastity 写的一个例子 /import fastify from 'fastify'import fastifyHtml from 'fastify-html'import formbody from '@fastify/formbody';const app = fastify()await app.register(fastifyHtml)await app.register(formbody);// 省略首页引入 htmx// 首页的模板,供应一个按钮,点击后要求 html,然后将要求返回的内容渲染到 parent-div 中app.get('/', async (req, reply) => {const name = req.query.name || 'World'return reply.html`Hello ${name}Click Me!`, reply})// 要求返回 htmlapp.post('/clicked', (req, reply) => {reply.html`Clicked!`;})await app.listen({ port: 3000 })
可能大家会以为很离谱,但显然事情已经开始发生变革,后端也在试图抢走前真个事情。
htmx在github上有非常多的关注者,可以找到非常多的前端代码,前三名就包括基于Python措辞实现的Django做事端框架。
看到良好的势头,jQuery 也在今年更新了 4.0 测试版本,为当代浏览器供应了更好的支持。这统统彷佛都是为老架构重新回到大众视野做好了准备。
企业视角
从业务角度来看,一个人同时做前端和后端不是更好吗?
确实,前端和后端都做对企业更有利,国外的小公司就比较喜好全栈。
可能有人以为是国情不同,但是在我打仗过的前端群里,这两年都有人谈到他们公司的前后端分离。
有些人还是喜好大公司的干事办法,讲究分工互助,但实在大公司里也有不少遗留项目,有些乃至是 PHP;也有新的实验项目。如果能投入最少的人力,快速试错,这种全栈框架自然是最佳选择。
我并不是说前后端分离不值得,只是我们已经进入AI竞赛,企业不愿意在后端系统的开拓上投入更多,能用就成了现在企业的目标,自然也要随之改变。
全栈打破
让我们来谈谈“前端已去世”的说法。我认为这是做出改变的最佳机遇。
当浏览器对新技能有了稳定的支持、UI 框架趋于领悟、UI 组件库趋于稳定之后,前端开拓者不再须要为浏览器不兼容而束手无策,不再须要为一个像素而辩论不休,不再须要为莫名其妙的产品交互而烦恼。
这并不虞味着前端已去世,相反,可能是我们某一阶段的任务已经完成,后面还有更主要的任务交给我们,或许,全栈便是一个打破口。
随着云做事/云原生的遍及,措辞已经不再是企业开拓考虑的紧张成分,这也为NodeJS全栈铺平了道路。
前端从来都是卖力最辛劳、最脏的事情,它接手了UI的图片切图事情,后来又接手了浏览器兼容性事情,后来又接手了后真个页面渲染事情。
那么我们为什么不更进一步,主动接手 API 开拓事情呢?