【Next.js】SSGとは…?

目次

はじめに

この記事ではNext.jsを使用する上で避けられない以下のレンダリング(=データフェッチ)について解説してきます。

  • CSR
  • SSR
  • SSG
  • ISR

今回のテーマはSSGです。

SSG以外も記事にしていますので興味がある方は是非ご覧ください!

CSRについては以下をご覧ください。

SSRについては以下をご覧ください。

ISRについては以下をご覧ください。

SSG

SSGはStatic Site Generationの略で、ビルド時にサーバ側でデータフェッチを行い、レンダリングしたHTMLを生成します。

ブラウザでとあるURLにアクセスするとビルド時に生成した静的ファイル(HTML)を返します。

イメージ図としては以下のような図になります。

SSGのイメージ図

SSGのようにビルド時に事前にデータフェッチをしてレンダリングをする方式のことをプリレンダリング(Pre-Rendering)と言います。

データの取得をビルド時に行うので、ページのデータを更新する際は再度ビルドする必要があります。

SSGでは、データの取得をビルド時に行うので、ページのデータを更新する際は再度ビルドをする必要があります。

SSGを使用しつつもデータを動的に更新したい場合があると思います。

このSSGのデメリットを解消したものがISRになります。

SSGはどんな時に使う?

以下の観点に当てはまる場合はSSGを使用すると良いでしょう。

  • データの更新が少ないECサイトやブログの場合
  • データの更新がないホームページの場合

Vercelの公式では、基本的にはSGGが推奨されています。

SSGの実装

SSGの実装例を紹介します。

よくやる実装方法としてはgetStaticPropsを使用してデータフェッチを行います。

import { useState } from 'react'

function Address({ data }) {
  const [data, setData] = useState(null)
  const [isLoading, setLoading] = useState(false)

  if (isLoading) return <p>Loading...</p>
  if (!data) return <p>No profile data</p>

  return (
    <div>
      <h1>{data.results[0].address1}</h1>
      <p>{data.results[0].address2}</p>
      <p>{data.results[0].address3}</p>
    </div>
  )
}

export async function getStaticProps() {
  const res = await fetch('https://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060')
  const data = await res.json()

  return { props: { data } }
}

export default Address;

参考

まとめ

本記事ではNext.jsにおけるデータフェッチのSSRについて解説しました。

是非、いいねやコメントをお願いします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次