← 返回

用 Next.js 静态导出做一个零维护博客

·#技术#NextJS

为什么不用 SSR

博客的内容在构建时就已经确定,没有必要每次请求都跑一遍服务端。静态导出把页面在 next build 时全部生成成 HTML,之后就是纯文件,CDN 直接发。

好处很直接:

  • 没有服务器要维护
  • 没有冷启动
  • 免费额度几乎用不完

关键配置

// next.config.ts
const nextConfig = {
  output: "export",
  images: { unoptimized: true },
  trailingSlash: true,
};

images.unoptimized 是必须的,因为静态导出没有服务端图片优化。trailingSlash 让每个页面输出成 index.html,对静态托管更友好。

动态路由怎么办

用 generateStaticParams 在构建期列出所有 slug:

export function generateStaticParams() {
  return getAllSlugs().map((slug) => ({ slug }));
}

构建时把每篇文章都渲染好,运行时不再有"动态"。

局限

静态导出不能用的东西也很明确:ISR、服务端 API 路由、按请求渲染。对博客来说都不需要;真需要的时候再换运行时。

问这篇文章

只基于博客内容 · 带来源引用

对文章有疑问?直接问,助手只根据博客里的内容回答。