事前レンダリング
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クローラの動作:
- アプリケーションのルートルート(
/
)、~/pages
ディレクトリ内の非ダイナミックページ、およびnitro.prerender.routes
配列内の他のルートのHTMLを読み込みます。 - HTMLと
payload.json
を静的に提供される~/.output/public/
ディレクトリに保存します。 - 他のルートにナビゲートするためHTML内のすべてのアンカータグ(
<a href="...">
)を探します。 - アンカータグが見つからなくなるまで、ステップ1〜3を各アンカータグに対して繰り返します。
これを理解することは重要です。なぜなら、発見可能なページにリンクされていないページは自動的にプリレンダリングできないからです。
こちらも参照 api > commands > generate#nuxt-generate選択的プリレンダリング
ビルド時にNitroがフェッチしてプリレンダリングするルートを手動で指定したり、nuxt.config
ファイルでプリレンダリングしたくないルート(/dynamic
など)を無視することができます:
export default defineNuxtConfig({
nitro: {
prerender: {
routes: ["/user/1", "/user/2"],
ignore: ["/dynamic"],
},
},
});
これをcrawlLinks
オプションと組み合わせて、クローラが発見できない一連のルート(/sitemap.xml
や/robots.txt
など)をプリレンダリングすることができます:
export default defineNuxtConfig({
nitro: {
prerender: {
crawlLinks: true,
※このページは Nuxt.js 公式ドキュメントの翻訳ページ(非公式)です。
公式ドキュメントの該当ページはこちら:
https://nuxt.com/docs/3.x/getting-started/prerendering