Next.js App Router早見表

Next.js App Router早見表:ファイル、レイアウト、エラー | We.Inc

App Routerのすべてのファイルとフォルダーの規約を1つの検索できる表にまとめ、app/内のファイルパスをURLに変換するテスターと、検証済みのlayout、loading、errorのコードを用意しました。

Next.js App Router早見表

App Routerでは、app/内のフォルダーがURLのセグメントになり、特別なファイルが各セグメントの画面を決めます。pageはセグメントを公開し、layoutはそれを包み、loadingはSuspenseのフォールバックを追加し、errorはエラー境界を追加し、routeはAPIを提供します。角かっこはセグメントを動的にし、丸かっこはURLを変えずにルートをまとめ、アンダースコアはフォルダーを非公開にします。

特によく書くファイル

App Routerに関するフォーラムの質問の多くは、ファイルをどこに置くのか、なぜ認識されないのかというものです。この早見表はその疑問に直接答えます。規約を検索し、ファイルパスを入力して生成されるURLを確認し、最小限のファイルをコピーできます。内容はすべて最新のnextjs.orgのドキュメントと照らし合わせて確認しています。

よくある質問

レイアウトとテンプレートの違いは何ですか?

レイアウトは子ページ間を移動してもマウントされたままなので、状態やエフェクトが維持されます。テンプレートのファイルはレイアウトのすぐ内側に置かれ、ページ遷移のたびに再レンダリングされるため、ページが変わるたびに実行したいエフェクトに向いています。

error.tsxがエラーを捕捉しないのはなぜですか?

エラー境界はClient Componentである必要があるため、'use client'の行が抜けているか、またはerror.tsxが包んでいない同じセグメントのレイアウトでエラーが起きているかのどちらかです。ルートレイアウトのエラーにはglobal-errorが必要です。

現在、error.tsxはどのpropsを受け取りますか?

任意のdigestを持つErrorオブジェクトであるerrorと、セグメントを再取得して再レンダリングするretryです。ドキュメントによると、retryはバージョン16.3で安定版になりました。再取得せずにエラーをクリアするresetも引き続き使えますが、通常はretryを選びます。

アンダースコアで始まるURLセグメントを作るには?

アンダースコアで始まるフォルダーは非公開で、ルーティングでは無視されます。アンダースコアで始まる実際のURLセグメントが必要な場合は、エンコードした形の%5Fを使って、%5Fdraftsのようにフォルダーに名前を付けます。

App Routerではミドルウェアをどこに置きますか?

バージョン16で、ミドルウェアのファイル規約は非推奨となりproxyに名前が変わりました。そのため新しいプロジェクトでは、プロジェクトのルート(またはsrc内)に置いたproxy.tsからproxy関数をエクスポートします。Next.jsには、ファイル名と関数名を変更するmiddleware-to-proxyというcodemodが用意されています。

特別なファイルの入れ子の順序

動的セグメントとparams

ストリーミングとステータスコード

App Routerのすべての規約

ファイル、フォルダー、メタデータファイル

スターターファイル

app/layout.tsx:ルートレイアウト

必須で、htmlとbodyを書く唯一の場所です。すべてのページはchildrenの位置にレンダリングされます。

app/blog/[slug]/page.tsx:動的なページ

paramsはPromiseなので、ページを非同期にし、slugを使う前にawaitします。

app/blog/loading.tsx:すぐに表示されるローディング状態

ページ遷移時、ページがストリーミングされている間にすぐ表示されます。propsは受け取りません。

app/blog/error.tsx:retry付きのエラー境界

Client Componentである必要があります。retryはセグメントを再取得して再レンダリングします。

app/global-error.tsx:ルートレイアウトのエラー

表示中はルートレイアウトを置き換えるため、独自のhtmlとbodyを持ち、メタデータはエクスポートできません。

ファイル

セグメントとその子に共通の画面。マウントされたまま保たれる

ファイル

ルートの画面。セグメントを公開する

ファイル

セグメントのSuspenseフォールバック

ファイル

notFound()や一致しないURLで表示される画面

ファイル

エラー境界。Client Component

ファイル

ルートレイアウト用のエラー画面。独自のhtmlとbodyを持つ

ファイル

APIエンドポイント。.jsか.tsのみ

ファイル

レイアウトに似ているが、ページ遷移のたびに再レンダリングされる

ファイル

パラレルルートのスロットのフォールバック

ファイル

forbidden()用の画面

ファイル

unauthorized()用の画面

ルートのファイル

プロジェクトのルートに置くリクエストプロキシ

ルートのファイル

OpenTelemetryと計測の設定

フォルダー

URLのセグメント

フォルダー

動的セグメント

フォルダー

キャッチオールセグメント、1つ以上の部分

フォルダー

オプションのキャッチオール、親にも一致する

フォルダー

ルートグループ、URLには含まれない

フォルダー

非公開フォルダー、ルーティングでは無視される

フォルダー

パラレルルート用の名前付きスロット

フォルダー

同じ階層のルートをインターセプトする

フォルダー

1つ上の階層のルートをインターセプトする

フォルダー

2つ上の階層のルートをインターセプトする

フォルダー

appのルートからのルートをインターセプトする

メタデータ

アプリのアイコン。画像またはコードで生成

メタデータ

共有用の画像。ファイルまたは生成

メタデータ

sitemap.xmlとrobots.txt。静的または生成

app/内のファイルパスを入力してください。テスターはルートグループを取り除き、動的セグメントを読み取って、URLパターン、またはそのファイルがルートにならない理由を表示します。

ルートパステスター

ファイルパス

規約を検索

検索

error, slot, group

種類で絞り込む

すべて

{n}件を表示

app/blog/[slug]/page.tsxのようなパスを入力してください

ルートではありません:_で始まるフォルダーは非公開です。

公開ルートではありません。{file}は、このフォルダーのルートを包む特別なファイルです。

公開ルートではありません。{file}は同じ場所に置かれたファイルで、配信されることはありません。

routeファイルは.jsか.tsである必要があります。

{d}はルートグループで、URLには含まれません

{d}はパラレルルートのスロットで、URLのセグメントではありません

{d}は親のパスにも一致します

{d}はインターセプトするルートです

{url}のAPIエンドポイント

{url}のページ

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る