Next.js · LEARN AT YOUR OWN PACE今日も、一歩ずつ。

LESSON 06 · 約25分

フォルダーでURLを設計する

pageとlayoutを使い、複数ページに共通の骨格を作ります。

コードを試す前に

基本演習はApp Router・JavaScript/JSX・Cache Components無効で進めます。11の有効化例は独立した発展実験です。01〜04は先に読んで、コードの実行は05の環境構築後に戻って試せます。

短い学習用の例です。各例は段階ごとの独立した例であり、全コードを一つのプロジェクトへ順に上書きして完成する形式ではありません。必要なファイル・依存関係・前提条件は注記に記載しています。

開発環境の準備を確認する →

このレッスンでわかること

  • URLに対応するpageを置ける
  • 共通レイアウトを作れる

フォルダーとpageの組み合わせが入口になる

App Routerではapp/notes/page.jsxが/notesに対応します。フォルダーを作るだけではページになりません。pageという特別なファイルが、そのルートのUIを公開します。

layoutはページを包む共通の骨格

layoutはchildrenに下位のページやレイアウトを受け取ります。ナビゲーションや共通の外枠を置くのに向いています。ルートレイアウトにはhtmlとbodyが必要です。入れ子のlayoutで、管理画面だけ別のメニューにすることもできます。

整理とURLを混同しない

componentsやlibに部品と処理を分けると見通しがよくなります。publicの画像は/から始まるパスで参照します。まずは浅い構造を作り、必要になった時点で整理する方が理解しやすいでしょう。

共通のルートレイアウト

app/layout.jsx
import Link from 'next/link'
import './globals.css'

export default function RootLayout({ children }) {
  return (
    <html lang="ja">
      <body>
        <nav aria-label="メイン">
          <Link href="/">ホーム</Link>
          <Link href="/notes">ノート</Link>
        </nav>
        {children}
      </body>
    </html>
  )
}

globals.cssが存在する構成です。各page側にmainを一つ置くとページの主内容が明確になります。

2つ目のページ

app/notes/page.jsx
export default function NotesPage() {
  return <main><h1>ノート一覧</h1></main>
}

TRY IT YOURSELF

プロフィールページを追加する

  1. app/about/page.jsxを作る
  2. 自己紹介の見出しを書く
  3. layoutのnavに/aboutへのLinkを追加する

できたらOK:/と/notesと/aboutで共通ナビゲーションが表示される

QUICK CHECK

理解を確かめよう

app/notes/page.jsxのURLは?

公式資料でもう少し詳しく

ここまで読めたら、ひとつ前進。