慕托小记慕托小记
使用 Next.js 15 构建现代化博客网站
#Next.js#Web开发

使用 Next.js 15 构建现代化博客网站

2024/10/21

使用 Next.js 15 构建现代化博客网站

Next.js 15 于 2024 年 10 月 21 日正式发布,带来了多项重大更新,包括 React 19 支持、Turbopack 稳定版、异步请求 API 以及缓存语义的破坏性变更。

核心新特性

React 19 支持

Next.js 15 完整支持 React 19,包括:

  • React Compiler(实验性): 自动 memoization,减少不必要的重渲染
  • 改进的 Hydration 错误处理: 更清晰的错误信息和调试体验
  • Actions API: 内置表单处理,无需手动管理 loading/error 状态

Turbopack Dev 稳定版

Turbopack 作为 Rust 编写的下一代打包工具,在 Next.js 15 中达到稳定状态:

  • 开发启动速度比 Webpack 快 700 倍(官方基准测试)
  • Fast Refresh 近乎即时
  • 支持 Server Fast Refresh(Next.js 16.2 新增)

异步请求 API(破坏性变更)

所有依赖请求特定数据的 API 已转为异步:

import { cookies } from 'next/headers';

export async function AdminPanel() {
  const cookieStore = await cookies();
  const token = cookieStore.get('token');
  // ...
}

受影响的 API:cookiesheadersdraftModeparamssearchParams

缓存语义变更

fetch 请求、GET 路由处理程序和客户端导航默认不再缓存,需要显式使用 revalidateTagrevalidatePath 进行增量静态再生(ISR)。

静态生成 (SSG)

对于博客这种内容相对固定的网站,静态生成仍是最佳选择:

export async function generateStaticParams() {
  const posts = await getAllPosts();
  return posts.map((post) => ({ slug: post.slug }));
}

Next.js 15 引入了 Partial Pre-Rendering (PPR),允许在同一页面中混合静态和动态内容,打破了过去静态与动态渲染的边界。

性能优化

  • 图片自动优化: 使用 next/image 自动转换为 WebP/AVIF
  • 字体优化: next/font 自动托管字体,消除布局偏移
  • 代码分割: 基于路由的自动代码分割
  • Streaming SSR: 渐进式渲染,首屏更快可见

总结

Next.js 15 让构建博客变得前所未有的简单和高效,React 19 的 Server Components 和 Turbopack 的稳定让开发体验大幅提升。

参考:Next.js 15 官方博客