跳到內容

路由群組

app 目錄中,巢狀資料夾通常會對應到 URL 路徑。然而,你可以將資料夾標記為路由群組,以防止該資料夾被包含在路由的 URL 路徑中。

這允許你將路由區段和專案檔案組織成邏輯群組,而不會影響 URL 路徑結構。

路由群組適用於

慣例

路由群組可以透過將資料夾名稱包在括號中來建立:(資料夾名稱)

範例

組織路由,而不影響 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 將會導致完整頁面載入。這適用於多個根版面配置。