2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SSR フレームワーク Next.js を使って React を快適ルーティング part2

Last updated at Posted at 2020-08-09

SSR フレームワーク Next.js を使って React を快適ルーティング part2

前回の続きです。
まだ、ページをちょこっと編集しただけなので、今回はアプリケーションにページを追加してみます。

ページ間を移動する

新しいページを作成する

  • 必要なファイルを作成する
mkdir pages/posts/
touch pages/posts/first-post.js
  • pages/posts/first-post.js を編集する
pages/posts/first-post.js
export default function FirstPost() {
  return <h1>First Post</h1>
}

リンクコンポーネントを使う

  • pages/index.js を開く
  • 以下を先頭行に追記する
pages/index.js
import Link from 'next/link'
  • 次に h1 タグの内容を変更する
pages/index.js
Learn <a href="https://nextjs.org">Next.js!</a>
↓
Read <Link href="/posts/first-post"><a>this page!</a></Link>
  • 次に pages/posts/first-post.js を以下の通り書き換える
pages/posts/first-post.js
import Link from 'next/link'

export default function FirstPost() {
  return (
    <>
      <h1>First Post</h1>
      <h2>
        <Link href="/">
          <a>Back to home</a>
        </Link>
      </h2>
    </>
  )
}
  • 動作確認しよう
    links.gif

クライアント側のナビゲーション

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

開発者ツールを使って html 全体の背景を設定してみましょう。
黄色の背景がページ遷移しても持続していることが分かります。

これは、ブラウザがページ全体を読み込まず、クライアント側のナビゲーションが機能していることを示しています。
client-side.gif

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

Next.js は自動的にコード分割するため、各ページはそのページに必要なものだけをロードします。
つまり、ホームページがレンダリングされるとき、他のページのコードは読み込まれないことを意味します。
これは大変素晴らしいですね!
これにより、数百ページを追加した場合でも、ホームページがすばやく読み込まれます。

リクエストしたページのコードをロードするだけでも、ページが分離されます。
特定のページがエラーをスローしても、アプリケーションの残りの部分は引き続き機能します。

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

今回使った Link コンポーネントの詳細はこちらを参照ください。

続く...

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?