跳至内容

路由组

app 目录中,嵌套文件夹通常映射到 URL 路径。但是,您可以将文件夹标记为**路由组**,以防止文件夹包含在路由的 URL 路径中。

这允许您将路由段和项目文件组织成逻辑组,而不会影响 URL 路径结构。

路由组对于以下方面很有用:

约定

可以通过将文件夹名称括在括号中来创建路由组:(folderName)

示例

组织路由而不影响 URL 路径

要组织路由而不影响 URL,请创建一个组以将相关路由放在一起。括号中的文件夹将从 URL 中省略(例如 (marketing)(shop))。

Organizing Routes with Route Groups

即使 (marketing)(shop) 中的路由共享相同的 URL 层次结构,您也可以通过在其文件夹中添加 layout.js 文件为每个组创建不同的布局。

Route Groups with Multiple Layouts

将特定段落纳入布局

要将特定路由纳入布局,请创建一个新的路由组(例如 (shop)),并将共享相同布局的路由移动到该组(例如 accountcart)。组外的路由将不共享布局(例如 checkout)。

Route Groups with Opt-in Layouts

在特定路由上选择加载骨架

要通过 loading.js 文件将加载骨架应用于特定路由,请创建一个新的路由组(例如 /(overview)),然后将您的 loading.tsx 移动到该路由组中。

Folder structure showing a loading.tsx and a page.tsx inside the route group

现在,loading.tsx 文件将仅应用于您的仪表板→概述页面,而不是所有仪表板页面,而不会影响 URL 路径结构。

创建多个根布局

要创建多个根布局,请删除顶层 layout.js 文件,并在每个路由组中添加 layout.js 文件。这对于将应用程序划分为具有完全不同 UI 或体验的部分很有用。需要将 <html><body> 标记添加到每个根布局中。

Route Groups with Multiple Root Layouts

在上面的示例中,(marketing)(shop) 都有自己的根布局。


需知:

  • 路由组的命名除了用于组织之外没有特殊意义。它们不会影响 URL 路径。
  • 包含路由组的路由**不应**解析为与其他路由相同的 URL 路径。例如,由于路由组不会影响 URL 结构,因此 (marketing)/about/page.js(shop)/about/page.js 都将解析为 /about 并导致错误。
  • 如果您使用多个根布局但没有顶级layout.js文件,则您的主页page.js文件应在一个路由组中定义,例如:app/(marketing)/page.js
  • 在**多个根布局之间导航**将导致**完整页面加载**(而不是客户端导航)。例如,从使用app/(shop)/layout.js/cart导航到使用app/(marketing)/layout.js/blog将导致完整页面加载。这**仅**适用于多个根布局。