主题
版本 13
¥Version 13
从 12 升级到 13
¥Upgrading from 12 to 13
要更新到 Next.js 版本 13,请使用你首选的包管理器运行以下命令:
¥To update to Next.js version 13, run the following command using your preferred package manager:
bash
npm i next@13 react@latest react-dom@latest eslint-config-next@13bash
yarn add next@13 react@latest react-dom@latest eslint-config-next@13bash
pnpm i next@13 react@latest react-dom@latest eslint-config-next@13bash
bun add next@13 react@latest react-dom@latest eslint-config-next@13需要了解:如果你使用 TypeScript,请确保还将
@types/react和@types/react-dom升级到最新版本。¥Good to know: If you are using TypeScript, ensure you also upgrade
@types/reactand@types/react-domto their latest versions.
v13 总结
¥v13 Summary
支持的浏览器 已更改为放弃 Internet Explorer 并针对现代浏览器。
¥The Supported Browsers have been changed to drop Internet Explorer and target modern browsers.
由于 12.x 和 14.x 已结束生命周期,最低 Node.js 版本已从 12.22.0 升至 16.14.0。
¥The minimum Node.js version has been bumped from 12.22.0 to 16.14.0, since 12.x and 14.x have reached end-of-life.
最低 React 版本已从 17.0.2 升至 18.2.0。
¥The minimum React version has been bumped from 17.0.2 to 18.2.0.
swcMinify配置属性已从false更改为true。请参阅 Next.js 编译器 了解更多信息。¥The
swcMinifyconfiguration property was changed fromfalsetotrue. See Next.js Compiler for more info.next/image导入已重命名为next/legacy/image。next/future/image导入已重命名为next/image。代码模式可用 可以安全、自动地重命名你的导入。¥The
next/imageimport was renamed tonext/legacy/image. Thenext/future/imageimport was renamed tonext/image. A codemod is available to safely and automatically rename your imports.next/link子级不能再是<a>。添加legacyBehavior属性以使用旧行为或删除<a>进行升级。代码模式可用 自动升级你的代码。¥The
next/linkchild can no longer be<a>. Add thelegacyBehaviorprop to use the legacy behavior or remove the<a>to upgrade. A codemod is available to automatically upgrade your code.target配置属性已被删除并由 输出文件跟踪 取代。¥The
targetconfiguration property has been removed and superseded by Output File Tracing.
迁移共享功能
¥Migrating shared features
Next.js 13 引入了具有新功能和约定的新 app 目录。但是,升级到 Next.js 13 不需要使用新的 app 路由。
¥Next.js 13 introduces a new app directory with new features and conventions. However, upgrading to Next.js 13 does not require using the new app Router.
你可以继续使用 pages 以及在两个目录中均有效的新功能,例如更新的 图片组件、链接组件、脚本组件 和 字体优化。
¥You can continue using pages with new features that work in both directories, such as the updated Image component, Link component, Script component, and Font optimization.
`
` 组件
¥` Component
Next.js 12 通过临时导入对图片组件进行了许多改进:next/future/image。这些改进包括更少的客户端 JavaScript、更简单的扩展和样式图片方法、更好的可访问性以及原生浏览器延迟加载。
¥Next.js 12 introduced many improvements to the Image Component with a temporary import: next/future/image. These improvements included less client-side JavaScript, easier ways to extend and style images, better accessibility, and native browser lazy loading.
从 Next.js 13 开始,此新行为现在是 next/image 的默认行为。
¥Starting in Next.js 13, this new behavior is now the default for next/image.
有两个代码模块可以帮助你迁移到新的图片组件:
¥There are two codemods to help you migrate to the new Image Component:
next-image-to-legacy-image:此 codemod 会安全且自动地将
next/image导入重命名为next/legacy/image,以保持与 Next.js 12 相同的行为。我们建议运行此 codemod 以自动快速更新到 Next.js 13。¥next-image-to-legacy-image: This codemod will safely and automatically rename
next/imageimports tonext/legacy/imageto maintain the same behavior as Next.js 12. We recommend running this codemod to quickly update to Next.js 13 automatically.next-image-experimental:运行之前的 codemod 后,你可以选择运行此实验性 codemod 将
next/legacy/image升级到新的next/image,这将删除未使用的 props 并添加内联样式。请注意,此 codemod 是实验性的,仅涵盖静态用法(例如 `¥next-image-experimental: After running the previous codemod, you can optionally run this experimental codemod to upgrade
next/legacy/imageto the newnext/image, which will remove unused props and add inline styles. Please note this codemod is experimental and only covers static usage (such as `
) but not dynamic usage (such as
`).
或者,你可以按照 迁移指南 手动更新,也可以查看 旧版比较。
¥Alternatively, you can manually update by following the migration guide and also see the legacy comparison.
<Link> 组件
¥<Link> Component
<Link> 组件 不再需要手动添加 <a> 标签作为子标签。此行为是在 版本 12.2 中作为实验选项添加的,现在是默认行为。在 Next.js 13 中,<Link> 始终渲染 <a> 并允许你将 props 转发到底层标签。
¥The <Link> Component no longer requires manually adding an <a> tag as a child. This behavior was added as an experimental option in version 12.2 and is now the default. In Next.js 13, <Link> always renders <a> and allows you to forward props to the underlying tag.
例如:
¥For example:
要将链接升级到 Next.js 13,你可以使用 new-link 代码模式。
¥To upgrade your links to Next.js 13, you can use the new-link codemod.
<Script> 组件
¥<Script> Component
next/script 的行为已更新以支持 pages 和 app。如果逐步采用 app,请阅读 升级指南。
¥The behavior of next/script has been updated to support both pages and app. If incrementally adopting app, read the upgrade guide.
字体优化
¥Font Optimization
以前,Next.js 通过内联字体 CSS 帮助你优化字体。版本 13 引入了新的 next/font 模块,使你能够自定义字体加载体验,同时仍然确保出色的性能和隐私。
¥Previously, Next.js helped you optimize fonts by inlining font CSS. Version 13 introduces the new next/font module which gives you the ability to customize your font loading experience while still ensuring great performance and privacy.
请参阅 优化字体 了解如何使用 next/font。
¥See Optimizing Fonts to learn how to use next/font.