nuxt logo

ドキュメント翻訳(非公式)

事前レンダリング

Nuxtはビルド時にページを静的にレンダリングさせることで、特定のパフォーマンスやSEOの指標を向上させることができます

Nuxtは、アプリケーションの選択したページをビルド時にレンダリングすることを可能にします。Nuxtはリクエストに応じて事前にビルドされたページを提供し、その場で生成するのではなく、提供します。

こちらも参照 Nuxtのレンダリングモード

クロールベースのプリレンダリング

Nitroのクローラを使用してアプリケーションをビルドしプリレンダリングするためにnuxt generate コマンドを使用します。このコマンドはnitro.staticオプションをtrueに設定したnuxt build、またはnuxt build --prerenderと同様です。

これにより、サイトがビルドされ、nuxtインスタンスが立ち上がり、デフォルトではルートページ/とそれにリンクされたサイトのページ、さらにそれにリンクされたサイトのページなどがプリレンダリングされます。

npx nuxt generate

これで、.output/publicディレクトリを任意の静的ホスティングサービスにデプロイするか、npx serve .output/publicでローカルにプレビューすることができます。

Nitroクローラの動作:

  1. アプリケーションのルートルート(/)、~/pagesディレクトリ内の非ダイナミックページ、およびnitro.prerender.routes配列内の他のルートのHTMLを読み込みます。
  2. HTMLとpayload.jsonを静的に提供される~/.output/public/ディレクトリに保存します。
  3. 他のルートにナビゲートするためHTML内のすべてのアンカータグ(<a href="...">)を探します。
  4. アンカータグが見つからなくなるまで、ステップ1〜3を各アンカータグに対して繰り返します。

これを理解することは重要です。なぜなら、発見可能なページにリンクされていないページは自動的にプリレンダリングできないからです。

こちらも参照 api > commands > generate#nuxt-generate

選択的プリレンダリング

ビルド時にNitroがフェッチしてプリレンダリングするルートを手動で指定したり、nuxt.configファイルでプリレンダリングしたくないルート(/dynamicなど)を無視することができます:

nuxt.config.ts
export default defineNuxtConfig({
  nitro: {
    prerender: {
      routes: ["/user/1", "/user/2"],
      ignore: ["/dynamic"],
    },
  },
});

これをcrawlLinksオプションと組み合わせて、クローラが発見できない一連のルート(/sitemap.xml/robots.txtなど)をプリレンダリングすることができます:

nuxt.config.ts
export default defineNuxtConfig({
  nitro: {
    prerender: {
      crawlLinks: true,