路由群組
在 app
目錄中,巢狀資料夾通常會對應到 URL 路徑。然而,你可以將資料夾標記為路由群組,以防止該資料夾被包含在路由的 URL 路徑中。
這允許你將路由區段和專案檔案組織成邏輯群組,而不會影響 URL 路徑結構。
路由群組適用於
- 將路由組織成群組,例如依網站區段、意圖或團隊。
- 在相同的路由區段層級啟用巢狀版面配置
- 在通用區段中的特定路由新增載入骨架畫面
慣例
路由群組可以透過將資料夾名稱包在括號中來建立:(資料夾名稱)
範例
組織路由,而不影響 URL 路徑
若要組織路由而不影響 URL,請建立一個群組以將相關路由放在一起。括號中的資料夾將會從 URL 中省略 (例如 (marketing)
或 (shop)
)。


即使 (marketing)
和 (shop)
內的路由共用相同的 URL 層級結構,你仍然可以透過在其資料夾內新增 layout.js
檔案,為每個群組建立不同的版面配置。


選擇特定區段加入版面配置
若要選擇特定路由加入版面配置,請建立新的路由群組 (例如 (shop)
),並將共用相同版面配置的路由移至該群組 (例如 account
和 cart
)。群組外部的路由將不會共用該版面配置 (例如 checkout
)。


在特定路由上選擇載入骨架畫面
若要透過 loading.js
檔案將載入骨架畫面套用至特定路由,請建立新的路由群組 (例如 /(overview)
),然後將你的 loading.tsx
移至該路由群組內。


現在,loading.tsx
檔案將僅適用於你的儀表板 → 概觀頁面,而不是所有儀表板頁面,且不會影響 URL 路徑結構。
建立多個根版面配置
若要建立多個根版面配置,請移除最上層的 layout.js
檔案,並在每個路由群組內新增 layout.js
檔案。這對於將應用程式劃分為具有完全不同 UI 或體驗的區段非常有用。<html>
和 <body>
標籤需要新增至每個根版面配置。


在上面的範例中,(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
將會導致完整頁面載入。這僅適用於多個根版面配置。
這有幫助嗎?