FAQ(常见问题,面向 Next.js 16+)
Next.js 与 React 的关系是什么?
- Next.js 是构建在 React 之上的全栈框架,提供路由、渲染策略、API、优化与部署整合。
- 在 App Router 中默认使用 React Server Components,以服务端渲染优先降低客户端 JS。
App Router 与 Pages Router 有何区别?必须迁移吗?
- App Router(app 目录)提供嵌套布局、并行/拦截路由、保留文件(error/loading/not-found)与更强的数据流能力。
- Pages Router(pages 目录)仍可用,但缺少上述能力。新项目推荐使用 App Router;老项目按需迁移。
在 Next.js 16+ 如何获取数据?
- 在服务端组件中直接使用 fetch。
- 通过
next: { revalidate }与 cache 控制缓存与增量再生成。 - 客户端交互通过 Server Actions 或调用 Route Handlers(API)。
- Pages Router 中的 getStaticProps/getServerSideProps 只在 pages 目录可用;App Router 不再依赖它们。
如何选择 SSR、SSG、ISR、PPR?
- SSR:数据必须最新;适合个性化页面。
- SSG:数据稳定;适合文档/营销页。
- ISR:稳定但需定期更新;通过 revalidate 保持新鲜度。
- PPR:静态外壳 + 动态数据流式填充,首屏更快、体验更佳。
如何控制缓存与再验证?
- 在 fetch 中设置:
await fetch("https://api.example.com/list", {
cache: "force-cache",
next: { revalidate: 120 },
});
- 在页面/布局导出:
export const revalidate = 60;