Menu

App Router

Next.js 的 App Router 引入了一种新的应用构建模型,利用了 React 的最新特性,如 服务器组件基于 Suspense 的流式传输服务器操作

通过 创建你的第一个页面 开始使用 App Router。

常见问题

如何在布局中访问请求对象?

你故意无法访问原始请求对象。但是,你可以通过仅服务器函数访问 headerscookies。你还可以 设置 cookies

布局 不会重新渲染。它们可以被缓存和重用,以避免在页面间导航时进行不必要的计算。通过限制布局访问原始请求,Next.js 可以防止在布局中执行可能较慢或昂贵的用户代码,这可能会对性能产生负面影响。

这种设计还强制了布局在不同页面之间的一致和可预测行为,简化了开发和调试过程。

根据你正在构建的 UI 模式,并行路由 允许你在同一布局中渲染多个页面,而页面可以访问路由片段以及 URL 搜索参数。

如何在页面上访问 URL?

默认情况下,页面是服务器组件。你可以通过 params 属性访问路由片段,通过 searchParams 属性访问给定页面的 URL 搜索参数。

如果你使用的是客户端组件,可以使用 usePathnameuseSelectedLayoutSegmentuseSelectedLayoutSegments 来处理更复杂的路由。

此外,根据你正在构建的 UI 模式,并行路由 允许你在同一布局中渲染多个页面,而页面可以访问路由片段以及 URL 搜索参数。

如何从服务器组件重定向?

你可以使用 redirect 从页面重定向到相对或绝对 URL。redirect 是临时 (307) 重定向,而 permanentRedirect 是永久 (308) 重定向。当在流式传输 UI 时使用这些函数,它们将插入一个元标签以在客户端执行重定向。

如何使用 App Router 处理身份验证?

以下是一些支持 App Router 的常见身份验证解决方案:

如何设置 cookies?

你可以在 服务器操作路由处理程序 中使用 cookies 函数设置 cookies。

由于 HTTP 不允许在流式传输开始后设置 cookies,你不能直接从页面或布局设置 cookies。你也可以从 中间件 设置 cookies。

如何构建多租户应用?

如果你想构建一个为多个租户提供服务的单个 Next.js 应用,我们有一个 示例 展示了我们推荐的架构。

如何使 App Router 缓存失效?

Next.js 有多层缓存,因此有多种方法使缓存的不同部分失效。了解更多关于缓存的信息

是否有基于 App Router 构建的全面、开源的应用?

是的。你可以查看 Next.js CommercePlatforms Starter Kit,这两个都是使用 App Router 的较大开源示例。

了解更多