浅谈Next.js v16更新
前段时间忙着研究算法,好久没更新博客了,回来一看Next.js都更新16啦(Next又背着我偷偷升级 ≡^-^≡ )。看了一下更新文档,浅谈一下比较大的方面吧,回头也可以把我的v15更新到v16了。
Next v16更新
首先就是Next v16将采用Turbopack作为默认构建工具,不再是实验性的(我们的Webpack终于可以光荣退休啦)。Turbopack是用Rust编写的高性能构建工具,使用后相较于Webpack,在开发时的热更新速度提升约5-10倍,大型项目的构建速度提升约2–5倍。当然,Next v16还是保留了Webpack打包的可选项,可以在构建命令中显示指定。
其次就是Next v16引入了稳定的缓存组件,可以通过 "use cache" 及对应方法,很方便的改变组件或函数级别的缓存行为。终于可以更新 unstable_cacheLife 啦 !(Tip:在v15中缓存机制是实验 API,设计得很分散)
最后就是v16引入了React 19.2,并优化了React Compiler的使用。React Compiler会自动 memoize 组件,现在可以通过配置React Compiler,让编译器自动处理组件优化,告别每次的 useMemo 和 useCallback。
更新方式和注意事项
关于更新到Next v16,官方推荐使用以下命令,它会采用 canary(金丝雀)版本的工具将Next.js更新至最新版本。在更新过程中,除常规文件和配置更新外,它还会将已弃用的 middleware 迁移到 proxy,将已稳定的 unstable_ API 移除前缀,具体参考官方文档 Version 16
npx @next/codemod@canary upgrade latest
说起来,官方还在文档中推荐在Next.js DevTools MCP中使用AI Agent来完成这项更新工作。嗯,AI Agent已经开始抢自动化工具的饭碗了 :P。