【4章】Next.jsのチュートリアルをやってみた

Next.js

 

これはNext.jsの公式チュートリアルの4. Creating Layouts and Pages に関するメモです

 

前章のメモ

 

Next.jsの公式チュートリアルの該当ページ

 

Learn Next.js: Creating Layouts and Pages | Next.js
Create the dashboard routes and a shared layout that can be shared between multiple pages.

 

学ぶこと

 

  1. ファイルベースルーティングを使用してダッシュボードページを作る
  2. 新しいルートセグメントを作ったときのフォルダやファイルの理解
  3. 複数のダッシュボード間で共有できるレイアウトの作成
  4. コロケーション、部分レンダリング、ルート レイアウトとは何か

 

ルーティング

 

Next.jsはファイルベースルーティングを採用しています。

ファイルベースルーティングとは…
ルールに従ってファイルを作成することで自動的にパスが生成されアクセスできる機能

 

フォルダの構造とURLのパスが対応します。

例えば、example.comにホスティングされているアプリでは、

app         //  URL:example.com/
├── dashboard     // URL: example.com/dashboard
          └── invoices   // URL: example.com/dashboard/invoices

のようにappフォルダから見た相対パスがURLとなります。

 

各フォルダにある page.tsx および layout.tsx がパスにアクセスした際のUIを定義しています。

なので、example.comにホスティングされているアプリでは、

example.com/ にアクセス ⇒ /app/page.tsx を表示

example.com/dashboard にアクセス ⇒ /app/dashboard/page.tsx を表示

 

ダッシュボードページを作成する

 

/dashboard のパスでアクセスしたいので、/app/dashboard/page.tsx を作成します

 

http://localhost:3000/dashboard にアクセスして確認してみましょう

Dashboard Page」と表示されればOKです!

 

ほかにも特別なフォルダやファイルがあるので、公式ドキュメントを見てみてください!

 

他のページも作ってみる

 

  1. カスタマーページ
    1. http://localhost:3000/dashboard/customers でアクセス
    2. <p>Customers Page</p> を表示
  2. 請求書ページ
    1. http://localhost:3000/dashboard/invoices でアクセス
    2. <p>Invoices Page</p> を表示

 

/app/dashboard/customers/page.tsx/app/dashboard/invoices/page.tsx を作成します

 

http://localhost:3000/dashboard/customers

http://localhost:3000/dashboard/invoices にアクセスして確認してみましょう!

 

ダッシュボードレイアウトを作成する

 

layout.tsx というファイルは、複数のページでUIを共有できます

 

例として、ダッシュボードのレイアウトを作成していきます。

/app/dashboard/layout.tsx を作成します。

 

/app/ui/dashboard/sidenav.tsx からインポートしたSideNavコンポーネントをサイドバーとして表示

別のレイアウトや内容は引数(children)に入ってきます。

page.tsxで書いたコードの内容がlayout.tsxのchildrenに入ってくるイメージですね

 

http://localhost:3000/dashboard にアクセスして確認してみましょう

左側にサイドバーが表示されていればOKです!

 

レイアウトを使用するメリット

 

Next.jsでレイアウトを利用するメリットの1つは、部分レンダリングされることです。

部分レンダリングとは…
ページ遷移時にページコンポーネント(page.tsxの内容)のみを再レンダリングし、レイアウト部(layout.tsxの内容)は再レンダリングされないこと

 

ページの読み込み速度が向上しそうですね

 

ルートレイアウト

 

/app/layout.tsx はルートレイアウトと呼ばれ、アプリ全体のUIを定義しています。

 

今回は、グローバルなCSSを読み込んでいたり、フォントの指定をしています。

 

 

次章のメモ

 

コメント

タイトルとURLをコピーしました