Next.js 团队刚刚于 2025 年 10 月 21 日发布了 16 版,这是一个重大更新。此次更新包含许多新功能,有望彻底改变我们的开发方式,从构建速度到缓存和调试。
无论您是在开发个人项目还是大型 SaaS 应用程序,Next.js 16 引入的工具都能让您的生活更轻松,应用运行速度更快。让我们来分析一下其中一些最有影响力的功能以及它们对您意味着什么。
Turbopack 现已成为默认设置:告别缓慢的构建
最受瞩目的消息之一是,基于 Rust 的打包工具Turbopack现已稳定,并成为所有新 Next.js 项目的默认打包工具。如果你曾经焦急地等待应用程序编译,那么这绝对是个好消息。
其性能表现令人印象深刻:
速度高达 10 倍的快速刷新:您的更改将几乎立即出现在浏览器中。
生产构建速度提高 2 到 5 倍:这显著加快了您的部署流程。
对于规模较大的团队来说,这些节省的时间会迅速累积起来,从而腾出更多时间进行编码,减少等待时间。Turbopack 还引入了文件系统缓存(目前处于测试阶段),通过在运行之间存储工件,可以进一步加快后续构建速度。
您可以通过简单的配置更改来启用它:
typescript//
next.config.ts
// 定义 Next.js 项目的配置对象
// 这个配置用于自定义和优化 Next.js 框架的行为
const nextConfig = {
// experimental: 实验性功能配置字段
// 包含尚未正式发布但可以提前试用的新特性
// 使用这些功能可能会在未来的版本中发生变更
experimental: {
// turbopackFileSystemCacheForDev: 启用 Turbopack 开发环境文件系统缓存
// Turbopack 是 Webpack 的继任者,由 Vercel 团队开发,基于 Rust,构建速度更快
turbopackFileSystemCacheForDev: true,
// 作用:
// - 在开发模式下使用文件系统缓存 Turbopack 的编译结果
// - 大幅提升开发服务器的启动和热重载速度
// - 减少重复编译相同文件的时间
// - 特别适合大型项目的开发体验优化
},
};
// 导出配置对象供 Next.js 使用
export default nextConfig;仅此一项改变就可以极大地改善您的日常开发体验。
使用缓存组件进行显式缓存
在旧版本的应用路由器中,缓存有时会让人感觉像个黑匣子。接下来,缓存组件是 JS 16 中的新功能。它们使缓存变得清晰、可选,并且更易于理解。
新的“use
cache”指令让您可以完全控制哪些内容需要缓存以及哪些内容保持动态。这比旧的隐式缓存模型有了很大的改进。
以下是如何在项目中启用它:
// next.config.ts
// 定义 Next.js 项目的配置对象
// 这个对象用于自定义 Next.js 框架的各种行为
const nextConfig = {
// cacheComponents 配置项(注意:这可能是自定义或实验性配置)
// 作用:启用或禁用组件级别的缓存
// - true: 开启组件缓存,可以提升重复渲染的性能
// - false: 关闭组件缓存
// ⚠️ 注意:在标准的 Next.js 文档中,这个配置项不常见
// 可能是项目特定的自定义配置或实验性功能
cacheComponents: true,
};
// 导出配置对象,供 Next.js 构建系统使用
// Next.js 在构建和运行时会自动读取这个配置文件
export default nextConfig;可以将其想象成制作一个仪表板。主布局和导航侧边栏不会经常更改,但每个用户的特定数据需要保持最新。您可以使用缓存组件缓存静态外壳,以便快速加载,还可以动态渲染个性化内容。这既能让您获得静态生成的性能优势,又不会牺牲动态数据的灵活性。
在 Web 应用程序缓存方面,您遇到的最大挑战是什么?请在评论中分享您的想法!
使用 Next.js DevTools MCP 进行 AI 辅助调试
调试是开发过程中最耗时的部分之一。Next.js DevTools现在内置了模型上下文协议 (MCP),这将使调试过程更加智能、快捷。
MCP 为 AI 代理提供有关您的应用程序的上下文,包括:
Next.js 知识:了解路由、缓存和渲染。
统一日志:浏览器和服务器日志合并,因此您不必在上下文之间切换。
自动错误访问:它可以获得详细的堆栈跟踪,而无需您复制和粘贴。
这让 AI 助手能够帮助您找出问题所在,解释问题原因,并在您的工作流程中提出修复建议。这就像一位资深开发人员与您一起完成项目,并在您遇到困难时随时为您提供帮助。
proxy.ts 取代 middleware.ts 以提高清晰度
Proxy.ts 现在取代了 middleware.ts(在使用 Node.js 运行时时),以使其用途更加清晰。这只是名称上的改变,但它使架构更加清晰。
新名称清楚地表明该文件旨在通过拦截传入的请求来处理网络边缘的逻辑。逻辑仍然相同,但约定更加清晰。
移动很容易:只需将 middleware.ts 的名称更改为 proxy.ts,并将导出函数的名称更改为 proxy。
// proxy.ts
// 导入 Next.js 的服务端请求和响应类型
// NextRequest: 封装了传入请求的对象,提供额外的便捷方法
// NextResponse: 用于创建和返回响应对象的工具类
import { NextRequest, NextResponse } from 'next/server';
// 默认导出的代理函数
// 这个函数在 Next.js 的中间件或 API 路由中被调用
// request: NextRequest 参数,包含客户端请求的所有信息
export default function proxy(request: NextRequest) {
// 你的请求拦截逻辑在这里
// 可以在这里添加:
// - 身份验证检查
// - 请求头修改
// - 路径重写逻辑
// - 访问控制
// - 日志记录
// 使用 NextResponse.redirect 方法创建重定向响应
// new URL('/home', request.url): 构建重定向的目标URL
// - '/home': 重定向的路径
// - request.url: 当前请求的基准URL,确保重定向到同源地址
return NextResponse.redirect(new URL('/home', request.url));
}这个小小的改变有助于使代码库更加直观,特别是对于加入项目的新开发人员而言。
React 19.2 集成和其他 DX 升级
Next.js 16 搭载了最新的 React Canary 版本,将 React 19.2 的功能带到了您的指尖。其中包括一些令人兴奋的新增功能,例如:
视图转换:在 UI 状态之间创建平滑的动画转换。
useEffectEvent:一个新的钩子,有助于分离效果中的反应性和非反应性逻辑。
组件:一种管理“背景”UI 的方法,使用 display: none 隐藏它,同时保留状态。
还有很多开发人员体验 (DX) 改进,例如更简单的创建下一个应用程序流程和更详细的日志记录,可以准确显示在构建上花费了多少时间。
您最想在 Next.js 项目中尝试哪些新的 React 19 功能?
Next.js 16 入门
准备好尝试一下了吗?您可以使用这些命令升级现有项目或创建新项目。
# 升级现有 Next.js 项目到最新版本
# 使用 Next.js 官方提供的代码迁移工具,@canary 表示使用最新测试版
npx @next/codemod@canary upgrade latest
# 安装最新版本的 Next.js 和相关依赖
# 确保项目使用最新稳定版的 Next.js、React 和 React DOM
npm install next@latest react@latest react-dom@latest
# 创建新的 Next.js 项目
# 使用最新版本的 create-next-app 脚手架工具初始化新项目
npx create-next-app@latest
有一些重大变化和新要求,例如需要 Node.js 20.9+ 和 TypeScript 5+。在升级生产应用程序之前,请务必阅读官方发行说明以获取完整的迁移指南。
Next.js 16为 Web 应用开发树立了全新标准,它高度重视开发人员的高效性和应用的运行体验。这项强大的更新将切实帮助各种规模的项目。
另请阅读:2025 年前端与后端:关键差异、趋势和所需技能
另请阅读:2025 年最重要的 7 种前端开发工具