双路由器
/01App Router 与 Pages Router 的开发与生产构建
项目状态
vinext 目前已经能够支撑相当一部分规模的 Next.js 应用,但它还不是每个应用或生产负载的即插即用替代品。 请预期会出现兼容性缺口(尤其是较新的 App Router 特性),并在采用前结合你自己的应用进行评估。
App Router 与 Pages Router 的开发与生产构建
React Server Components、Server Actions、路由处理器与中间件
静态生成、ISR、output: "export",以及 standalone Node.js 输出
核心 Next.js API 与模块,包括 next/link、next/image、next/navigation、next/headers、next/cache,以及 Metadata API
Cloudflare Workers 部署,支持 bindings、缓存适配器与图片优化
迁移工具,通过 vinext check、vinext init,以及 vinext 的 Agent Skill
这些是当前活跃的兼容性工作方向,并非永久性的排除项。
"use cache" 已实现部分功能,但完整的 cacheComponents 行为仍不完整。缓存配置文件、标签、局部外壳(partial shells)、恢复行为、预取,以及一些开发/构建阶段的缓存语义,尚未在所有情况下与 Next.js 一致。
图片可以在 Cloudflare 上按请求实时优化,但 vinext 尚未复刻 Next.js 完整的构建期图片处理流水线。Google Fonts 从 CDN 加载,本地字体 CSS 在运行时注入,而非在构建时提取。
sharp、resvg、satori、lightningcss、@napi-rs/canvas 等包在 Vite 的 RSC 开发环境中可能会失败。生产构建对这些情况的支持比开发模式更完整。
preferredRegion 路由配置会被忽略;runtime 不会决定路由在哪里运行(在 cacheComponents 之外,runtime = "edge" 的 App Router 页面永远不会被 ISR 缓存,这与 Next.js 一致);部分近期引入或未文档化的 Next.js 行为可能尚未复刻。
这些是有意为之的排除项。对于目前缺失但已在路线图上的内容,见上方的正在解决的已知缺口。
@vercel/og 边缘运行时、Vercel Analytics 集成、Vercel KV/Blob/Postgres bindings。请使用平台等价物。
自 Next.js 13 起已废弃。useAmp() 返回 false。
请改用配置中的 output: 'export'。
这套东西跑在 Vite 上。请使用 Vite 插件,而非 webpack loader/插件。
请使用 Vitest。
新 vinext 项目请使用 create-vinext-app。
如果它不在 Next.js 文档里,我们大概率不会复刻它。