Nuxt Nation カンファレンスが開催されます。11月12日~13日にご参加ください。

メタタグ

Nuxt 2からNuxt 3へのメタタグの管理

Nuxt 3では、メタタグを管理するいくつかの方法があります。

  1. nuxt.config を使用する方法。
  2. useHead コンポーザブルを使用する方法
  3. グローバルメタコンポーネントを使用する方法

titletitleTemplatebasescriptnoscriptstylemetalinkhtmlAttrsbodyAttrs をカスタマイズできます。

Nuxtは現在、メタタグの管理にvueuse/headを使用していますが、実装の詳細は変更される可能性があります。
ドキュメント > スタートガイド > SEOメタで詳細をご覧ください。

移行

  1. nuxt.config で、headmeta に変更します。この共有メタ設定を app.vue に移動することを検討してください。(オブジェクトには重複排除のための hid キーがなくなりました。)
  2. head でコンポーネントの状態にアクセスする必要がある場合は、useHead を使用するように移行する必要があります。組み込みのメタコンポーネントの使用も検討してください。
  3. Options APIを使用する必要がある場合は、defineNuxtComponentを使用するときに使用できる head() メソッドがあります。

useHead

<script>
export default {
  data: () => ({
    title: 'My App',
    description: 'My App Description'
  })
  head () {
    return {
      title: this.title,
      meta: [{
        hid: 'description',
        name: 'description',
        content: this.description
      }]
    }
  }
}
</script>

メタコンポーネント

Nuxt 3は、同じタスクを実行するために使用できるメタコンポーネントも提供しています。これらのコンポーネントはHTMLタグに似ていますが、Nuxtによって提供され、同様の機能を備えています。

<script>
export default {
  head () {
    return {
      title: 'My App',
      meta: [{
        hid: 'description',
        name: 'description',
        content: 'My App Description'
      }]
    }
  }
}
</script>
  1. ネイティブHTML要素と区別するために、これらのコンポーネント名には大文字を使用してください(<title> ではなく <Title>)。
  2. これらのコンポーネントは、ページのテンプレート内のどこにでも配置できます。

Options API

Nuxt 3 (Options API)
<script>
// if using options API `head` method you must use `defineNuxtComponent`
export default defineNuxtComponent({
  head (nuxtApp) {
    // `head` receives the nuxt app but cannot access the component instance
    return {
      meta: [{
        name: 'description',
        content: 'This is my page description.'
      }]
    }
  }
})
</script>