コンテンツにスキップ

ページ間を移動する

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

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

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

これを確認する簡単な方法は次のとおりです

  • ブラウザの開発者ツールを使用して、<html>background CSS プロパティを yellow に変更します。
  • リンクをクリックして、2つのページ間を前後に移動します。
  • ページ遷移間で黄色の背景が持続していることがわかります。

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

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

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

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

これにより、数百ページあってもホームページがすばやく読み込まれます。

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

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

まとめ

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

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

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

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

**クイックレビュー**: ユーザーがブラウザを開き、your-blog.com/posts/first-post に移動します。このページには、最初にどの JavaScript が読み込まれますか?