コンテンツにスキップ

8

クライアントサイドナビゲーション

Link コンポーネントは、同じ Next.js アプリ内の 2 つのページ間でのクライアントサイドナビゲーションを可能にします。

クライアントサイドナビゲーションとは、ブラウザによるデフォルトのナビゲーションよりも高速な、*JavaScript を使用した* ページ遷移のことです。

これを検証する簡単な方法を以下に示します。

  • ブラウザの開発者ツールを使用して、<html>background CSS プロパティを yellow に変更してください。
  • リンクをクリックして、2 つのページ間を行き来してください。
  • ページ遷移の間、黄色の背景が維持されているのがわかります。

これは、ブラウザが完全なページを読み込んでいるわけではなく、クライアントサイドナビゲーションが機能していることを示しています。

Links

<Link href="…"> の代わりに <a href="…"> を使用してこれを実行した場合、ブラウザは完全なリロードを行うため、リンククリック時に背景色がクリアされます。

コード分割とプリフェッチ

Next.js はコード分割を自動的に行うため、各ページは必要なものだけを読み込みます。つまり、ホームページがレンダリングされるときに、他のページのコードは初期状態では提供されません。

これにより、数百ページがあってもホームページが迅速に読み込まれることが保証されます。

リクエストしたページのみのコードを読み込むということは、ページが分離されることも意味します。特定のページでエラーが発生しても、アプリケーションの他の部分は引き続き機能します。

さらに、Next.js の本番ビルドでは、Link コンポーネントがブラウザのビューポートに表示されると、Next.js はリンクされたページのコードをバックグラウンドで自動的にプリフェッチします。リンクをクリックする頃には、目的のページのコードはすでにバックグラウンドで読み込まれており、ページ遷移はほぼ瞬時に行われます!

まとめ

Next.js は、コード分割、クライアントサイドナビゲーション、および(本番環境での)プリフェッチによって、アプリケーションを最高のパフォーマンスのために自動的に最適化します。

pages ディレクトリの下にファイルをファイルとしてルートを作成し、組み込みの Link コンポーネントを使用します。ルーティングライブラリは必要ありません。

Link コンポーネントの詳細については、next/link の API リファレンスを、ルーティング全般についてはルーティングドキュメントを参照してください。

注: Next.js アプリケーションの外部の外部ページにリンクする必要がある場合は、Link を使用せずに <a> タグを使用してください。

チャプターを完了しました。8

次へ

9: レイアウトコンポーネント

Pages Router: クライアントサイドナビゲーション | Next.js