最新消息:关注人工智能 AI赋能新媒体运营

Cloudflare 重新打造兼容 Next.js 的框架 Vinext,解决无服务器部署痛点

科技资讯 admin 浏览

Cloudflare 发布开源项目 Vinext,这是一套基于 Vite 构建工具重新实现 Next.js API 接口的前端框架,主要解决 Next.js 在 Cloudflare Workers 等无服务器平台上的部署痛点。目前 Vinext 仍处于实验阶段,已涵盖 Next.js 16 约 94% 的 API。

Next.js 是目前开发者使用最多的 React 框架,但在无服务器生态中存在部署难题。Cloudflare 指出,Next.js 的工具链高度定制化,并投入大量资源开发 Turbopack,导致应用若要部署到 Cloudflare Workers、Netlify Functions 或 AWS Lambda 等非 Vercel 平台,必须额外转换为平台可执行的形式。业界虽有 OpenNext 等方案尝试解决,但这类做法本质上是逆向工程 Next.js 的构建结果,版本更新时容易出现不可预知的差异,修复成本也随之上升。

Vinext 并非封装或转接 Next.js 的构建产物,而是直接在 Vite 之上重新实现 Next.js 的 API 接口,包括路由、服务端渲染、React 服务端组件(Server Components)、Server Actions、缓存机制与中间件等功能。Vite 是前端生态系统中广泛采用的构建工具,Astro、SvelteKit、Nuxt 及 Remix 等框架均以其为基础。由于 Vinext 的输出直接兼容 Vite 生态,理论上可通过 Vite Environment API 在不同平台运行。

Cloudflare 使用一个包含 33 条路由的 App Router 应用进行测试对比,在 Vite 8 搭配使用 Rust 开发的 Rolldown 打包工具下,Vinext 的生产环境构建时间为 1.67 秒,相较 Next.js 16.1.6 搭配 Turbopack 的 7.38 秒快了约 4.4 倍。客户端打包体积方面,Vinext 经 gzip 压缩后为 72.9 KB,Next.js 为 168.9 KB,减少了约 57%。Cloudflare 也提醒,该组测试主要衡量编译与打包速度,并非实际上线后的服务性能。

特别的是,Cloudflare 提出流量感知预渲染(Traffic-aware Pre-Rendering,TPR)机制。传统 Next.js 在构建时会预渲染 generateStaticParams() 列出的所有页面,页面数量一多,构建时间便线性增长。TPR 则利用 Cloudflare 作为反向代理所掌握的流量数据,在部署时仅预渲染实际有访问量的热门页面,其余页面改由实时服务端渲染处理,首次请求后再通过增量静态再生(ISR)缓存。该功能目前仍为实验性质。

在质量保障方面,Vinext 已建立超过 1,700 项 Vitest 单元测试与 380 项 Playwright 端到端测试,其中部分测试直接移植自 Next.js 官方测试套件与 OpenNext 的 Cloudflare 兼容性测试。

Cloudflare 同时指出,Vinext 约 95% 的代码与 Cloudflare 平台无关,属于纯 Vite 实现,Vinext 源码已发布于 GitHub,采用 MIT 开源许可。该项目由 Cloudflare 工程经理 Steve Faulkner 使用 AI 模型 Claude 辅助开发,从首次提交代码到基本功能完成仅耗时不到一周,词元(Token)成本约 1,100 美元。