Menu

ルートグループ

appディレクトリでは、通常、ネストされたフォルダはURL パスにマッピングされます。ただし、フォルダをルートグループとしてマークすることで、そのフォルダをルートのURL パスに含めないようにできます。

これにより、URL パス構造に影響を与えることなく、ルートセグメントとプロジェクトファイルを論理的なグループに整理できます。

ルートグループは以下のような用途に便利です:

規則

ルートグループは、フォルダ名を括弧で囲むことで作成できます:(フォルダ名)

URL パスに影響を与えずにルートを整理

URL に影響を与えずにルートを整理するには、関連するルートをまとめるグループを作成します。括弧内のフォルダは、URL から除外されます(例:(マーケティング) または (ショップ))。

ルートグループによるルートの整理

(マーケティング)(ショップ) 内のルートが同じ URL 階層を共有していても、各グループ内の layout.js ファイルに異なるレイアウトを作成できます。

複数のレイアウトを持つルートグループ

特定のセグメントをレイアウトに組み込む

特定のルートをレイアウトに組み込むには、新しいルートグループ(例:(ショップ))を作成し、同じレイアウトを共有するルート(例:アカウントカート)をグループに移動します。グループ外のルート(例:チェックアウト)はレイアウトを共有しません。

オプトインレイアウトを持つルートグループ

特定のルートにローディングスケルトンを適用

loading.js ファイルを介してローディングスケルトンを特定のルートに適用するには、新しいルートグループ(例:/(概要))を作成し、loading.tsx をそのルートグループ内に移動します。

ルートグループ内のloading.tsxとpage.tsxを示すフォルダ構造

これで、loading.tsx ファイルは、URL パス構造に影響を与えることなく、すべてのダッシュボードページではなく、ダッシュボード → 概要ページにのみ適用されます。

複数のルートレイアウトの作成

複数のルートレイアウトを作成するには、トップレベルの layout.js ファイルを削除し、各ルートグループ内に layout.js ファイルを追加します。これは、完全に異なるUI または体験を持つアプリケーションをセクション分けする場合に便利です。<html><body> タグは、各ルートレイアウトに追加する必要があります。

複数のルートレイアウトを持つルートグループ

上記の例では、(マーケティング)(ショップ) はそれぞれ独自のルートレイアウトを持っています。

補足

  • ルートグループの名前付けには特別な意味はなく、整理のためだけに使用されます。URL パスには影響しません。
  • ルートグループを含むルートは、他のルートと同じ URL パスに解決されるべきではありません。例えば、ルートグループは URL 構造に影響しないため、(マーケティング)/about/page.js(ショップ)/about/page.js の両方が /about に解決され、エラーを引き起こします。
  • トップレベルの layout.js ファイルなしで複数のルートレイアウトを使用する場合、ホーム page.js ファイルはルートグループの1つで定義する必要があります。例:app/(マーケティング)/page.js
  • 複数のルートレイアウト間を移動すると、クライアントサイドのナビゲーションではなく、ページ全体の読み込みが発生します。例えば、app/(ショップ)/layout.js を使用する /cart から app/(マーケティング)/layout.js を使用する /blog に移動すると、ページ全体の読み込みが発生します。これは複数のルートレイアウトにのみ適用されます。