Next.js 如何实现 SSG(静态生成)?动态路由如何预渲染?
SSG 在构建时把页面渲染成静态 HTML,访问极快、可上 CDN。
- 不带参数的页面默认静态生成
- 动态路由需配合
generateStaticParams提供参数列表,Next 在构建时逐个预渲染
// app/blog/[slug]/page.tsx
export async function generateStaticParams() {
const posts = await getAllPosts() // 构建时拿到所有 slug
return posts.map(p => ({ slug: p.slug }))
}
export default async function Page({ params }) {
const post = await getPost(params.slug)
return <article>{post.body}</article>
}
dynamicParams = false时可禁止未预渲染的参数被按需生成(访问即 404)。Pages Router 用getStaticPaths+getStaticProps。