nuxt logo

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

レイアウト

Nuxt Kitは、レイアウトを扱うためのユーティリティを提供します。

レイアウトは、ページをラップするために使用されます。例えば、ヘッダーやフッターなどの共通コンポーネントでページをラップするために使用できます。レイアウトは addLayout ユーティリティを使用して登録できます。

addLayout

テンプレートをレイアウトとして登録し、レイアウトに追加します。

Nuxt 2では、このユーティリティを使用して error レイアウトも登録できます。Nuxt 3+では、error レイアウトはプロジェクトルートの error.vue ページに置き換えられました

使用法

import { addLayout, createResolver, defineNuxtModule } from '@nuxt/kit'

export default defineNuxtModule({
  setup () {
    const { resolve } = createResolver(import.meta.url)

    addLayout({
      src: resolve('templates/custom-layout.ts'),
      filename: 'custom-layout.ts',
    }, 'custom')
  },
})

function addLayout(layout: NuxtTemplate | string, name: string): void

パラメータ

layout: テンプレートオブジェクトまたはテンプレートへのパスを持つ文字列。文字列が提供された場合、それは src が文字列値に設定されたテンプレートオブジェクトに変換されます。テンプレートオブジェクトが提供された場合、以下のプロパティを持っている必要があります:

プロパティ必須説明
srcstringfalseテンプレートへのパス。src が提供されない場合、代わりに getContents を提供する必要があります。
filenamestringfalseテンプレートのファイル名。filename が提供されない場合、それは src パスから生成されます。この場合、src オプションが必要です。
dststringfalse出力先ファイルへのパス。dst が提供されない場合、それは filename パスと nuxt buildDir オプションから生成されます。
optionsRecord<string, any>falseテンプレートに渡すオプション。
getContents(data) => string | Promise<string>falseoptions オブジェクトを引数に取る関数。この関数は文字列または文字列に解決されるプロミスを返す必要があります。src が提供されている場合、この関数は無視されます。
writebooleanfalsetrue に設定すると、テンプレートは出力先ファイルに書き込まれます。それ以外の場合、テンプレートは仮想ファイルシステムでのみ使用されます。

name: レイアウトを登録する名前(例:defaultcustom など)。

これは、ヘッダーとフッターでページをラップする custom という名前のレイアウトを登録します。

import { addLayout, defineNuxtModule } from '@nuxt/kit'

export default defineNuxtModule({
  setup () {
    addLayout({
      write: true,
      filename: 'my-layout.vue',
      getContents: () => `<template>
  <div>
    <header>My Header</header>
    <slot />
    <footer>My Footer</footer>
  </div>
</template>`,
    }, 'custom')
  },
})

このレイアウトをページで使用できます:

pages/about.vue
<script setup lang="ts">
definePageMeta({
  layout: 'custom',
})
</script>

<template>
  <div>About Page</div>
</template>

@vitejs/plugin-vue による仮想 .vue ファイルのサポートがないため、この制限を回避するには、addLayout の最初の引数に write: true を渡すことで対処できます。