由 Vite 驱动的 Next.js 应用:Vinext 1.0 正式发布

💡 原文英文,约2000词,阅读约需8分钟。
📝

内容提要

Cloudflare发布Vinext 1.0,可将Next.js应用(Pages与App Router)移植到任意平台,包括Cloudflare Workers、Netlify和AWS Lambda。兼容性超99%,支持完整页面生命周期、缓存、可观测性及生态兼容。新增构建时预渲染与缓存预热,利用Cloudflare网络提前渲染页面。项目通过AI代理持续跟踪Next.js更新并自动修复兼容问题。

🔎

延伸解读

Vinext 1.0 的兼容性重点

Vinext 1.0 将兼容性提升至超过 99%(不包括缓存组件),并同时支持 App Router 和 Pages Router。这意味着现有 Next.js 应用,无论使用哪种路由,都可以较低成本迁移。但需注意,对 Next.js 16 的“use cache”指令支持有限,若项目重度依赖缓存组件,迁移前应评估影响。

缓存预热如何优化部署

Vinext 1.0 引入缓存预热,将页面预渲染从构建机器转移到 Cloudflare 网络。部署时先上传新 Worker 版本并定向请求页面,提前填充缓存,再切换生产流量。这能避免构建时长时间等待,尤其适合拥有大量 URL 的站点,但预热效果依赖 Cloudflare 网络。

AI 代理驱动的持续维护

项目通过 AI 代理每日审查 Next.js canary 的提交,自动识别可能影响 Vinext 的变更,并生成跟踪问题。每晚还会重新生成兼容性矩阵。这种自动化维护有助于快速发现回归,但最终修复仍需维护者判断,因此兼容性更新可能存在延迟。

❓

Q&A

Vinext 1.0 是什么?它和 Next.js 有什么关系?

Vinext 1.0 是由 Cloudflare 发布的、由 Vite 驱动的框架,旨在让 Next.js 应用(包括 Pages 和 App Router)能够移植到任意平台,如 Cloudflare Workers、Netlify 和 AWS Lambda。它兼容超过 99% 的 Next.js 功能,并支持完整的页面生命周期、缓存和可观测性。

如何将现有的 Next.js 项目迁移到 Vinext?

迁移现有 Next.js 项目到 Vinext 只需运行两个命令:npx vinext check 和 npx vinext init。前者验证兼容性,后者设置 Vite 和部署配置,同时保留原有的 Next.js 项目结构。

Vinext 1.0 在缓存方面有哪些新特性?

Vinext 1.0 引入了缓存预热功能,将页面预渲染从构建机器转移到 Cloudflare 网络。它支持构建时预渲染、页面级增量静态再生(ISR),以及按路径或标签失效缓存。部署时,新版本先部署到 0% 流量,预渲染页面后再提升,确保上线时缓存已就绪。

Vinext 如何保持与 Next.js 的兼容性?

Vinext 通过 AI 代理持续跟踪 Next.js 的更新。每天早晨,代理会审查 Next.js canary 的变更,获取差异并创建跟踪问题;每晚运行 Next.js 测试套件生成兼容性矩阵。当发现差距时,代理能识别变更、构建复现、移植测试并提出修复。

Vinext 1.0 支持哪些 Next.js 功能?

Vinext 1.0 支持 App Router、Pages Router 和混合应用,包括 React Server Components、Server Actions、API 路由、路由处理器、中间件和客户端导航。它还支持完整的页面生命周期(服务器渲染、预渲染、静态导出、ISR)、缓存、可观测性(OpenTelemetry 和 Sentry)以及 Next.js 生态系统兼容性(认证、MDX、图像优化、字体、元数据等)。

Vinext 1.0 的部署流程是怎样的?

部署时,Vinext 会上传新的 Worker 版本并部署到 0% 的生产流量,然后从该版本请求页面进行预渲染。缓存填充后,再将部署提升到生产流量。可以使用命令 npx @vinext/cloudflare deploy --warm-cache 来部署并启用缓存预热。

🏷️

标签

➡️

继续阅读