最近我一直在折腾把几个 Vite 项目推到生产环境,反复试了几家平台之后,发现一个挺拧巴的现象:Vite 作为构建工具已经快成前端标配了,但建完站之后往哪儿放、怎么做服务端渲染、怎么接函数计算,选择却比 Next.js 那一套少得多。Next.js 背后有 Vercel 撑着,开发者从写代码到上线几乎是闭着眼睛一条龙;Vite 这边倒好,构建完出来一个静态文件夹,剩下的事全靠自己拼。所以在圈子里看到尤雨溪带着 Void 亮相的消息时,我第一反应不是"又一个部署平台",而是"Vite 生态绕了一大圈,终于要补齐自己的 Vercel 了"。这篇就来聊聊 Void 到底是什么、它和 Next.js + Vercel 的组合差在哪,以及我实际把它用起来之后的一些判断。
1. Void 发布不是"再造一个 Vercel"——先搞清楚它到底解决什么问题
1.1 Vite 生态这几年的隐形短板
Vite 从诞生到现在,确实把开发体验卷到了一个很高的水位。依赖预构建、按需编译、HMR 快到几乎无感,这些优点在本地开发里体感非常明显,所以大量 Vue 3 项目、React 项目,甚至不少传统多页面应用都迁到了 Vite 上。但问题出在"开发完"之后。
我以前习惯的流程是这样的:vite build 打出一堆静态资源,然后丢到 Nginx、GitHub Pages 或者对象存储上。如果项目只需要纯静态展示,这个流程没有任何毛病;可一旦涉及到服务端渲染、按需拉取服务端数据、接口聚合、权限前置校验这些需求,静态托管就完全不够用了。Next.js 之所以能成为很多团队默认选型,不是因为它的 React 写法比 Vite 生态高明多少,而是因为它自带了一整套从"开发"到"部署"的闭环,Vercel 把 SSR、ISR、边缘函数、域名管理全部打包好了。你用 Next.js,等于有人帮你把"上线之后怎么办"的问题提前解决了。
Vite 这些年不是没有尝试补这块短板,第三方平台也陆续支持了 Vite 项目托管,但大多数只是把它当成静态站点来处理:上传构建产物、给你一个 CDN 域名就结束了。那些真正决定应用上线质量的东西——服务端渲染、流式响应、函数路由、增量更新——依旧要自己搭服务或者另找平台。对个人开发者来说,这还只是多花点时间;对想拿 Vite 做全栈业务的中小团队来说,这就是一道很现实的技术选型门槛:要省事,就得老老实实回到 Next.js;要坚持 Vite,就得忍受"构建工具很好,但离生产环境差一步"的割裂感。
1.2 Void 和 Vercel 的定位差异,为什么不能画等号
Void 这个名字一出来,网上最直接的说法就是"Vite 版的 Vercel"。这个理解方向没错,但我觉得还是粗糙了一点。Vercel 能成为 Next.js 的默认宿主,核心逻辑是"框架和平台深度绑定",它知道 Next.js 的每个文件约定、每个路由规则、每个渲染模式什么时候触发,所以能做到零配置部署。而 Void 想做的事情是:让 Vite 项目也拥有同样级别的"深度绑定",但它面对的局面比 Vercel 当年复杂得多。
Vite 本身不是一个框架,它只是构建层。你可以用 Vite 搭 Vue 3,也可以搭 React、Solid、Svelte,甚至可以只拿它来编译一个原生 JavaScript 的页面。这意味着 Void 不能像 Vercel 对待 Next.js 那样,只认准一个框架的文件约定就万事大吉。它需要抽出一层"通用服务端能力",让不同框架的 Vite 项目都能接入,同时又不能把 Vite 那种"轻、快、按需"的精神丢掉。所以从我目前的理解来看,Void 更准确的定位是"面向 Vite 生态的部署与运行时平台",它不是某个框架的专属宿主,而是整个 Vite 工具链背后的那朵云。
这也就解释了为什么说它"不能和 Vercel 画等号"。Vercel 的护城河是 Next.js,Void 的护城河是 Vite 这个更大的生态。Void 如果能成功,它不仅会带走一部分原本为了部署省事而选 Next.js 的用户,还会让一批本来只能用静态托管凑合的 Vite 用户开始考虑服务端能力。这个价值比单纯
