元标签

从Nuxt 2到Nuxt 3管理您的元标签。

Nuxt 3提供了多种管理元标签的方式:

  1. 通过您的nuxt.config
  2. 通过useHead组合式API
  3. 通过全局元组件

您可以自定义titletitleTemplatebasescriptnoscriptstylemetalinkhtmlAttrsbodyAttrs

Nuxt当前使用Unhead来管理您的元标签,但实现细节可能会发生变化。
阅读更多 Docs > Getting Started > Seo Meta.

迁移

  1. 在您的nuxt.config中,将head重命名为meta。考虑将这些共享的元配置移动到您的app.vue中。(注意,对象不再具有用于去重的hid键。)
  2. 如果您需要通过head访问组件状态,应迁移到使用useHead。您也可以考虑使用内置的元组件。
  3. 如果您需要使用Options API,可以在defineNuxtComponent中使用head()方法。

useHead

<script>
export default {
  data: () => ({
    title: '我的应用',
    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: '我的应用',
      meta: [{
        hid: 'description',
        name: 'description',
        content: '我的应用描述'
      }]
    }
  }
}
</script>
  1. 确保使用大写字母来命名这些组件,以区别于原生HTML元素(例如<Title>而不是<title>)。
  2. 您可以将这些组件放置在页面模板的任意位置。 ::

Options API

Nuxt 3 (Options API)
<script>
// 如果使用Options API的`head`方法,您必须使用`defineNuxtComponent`
export default defineNuxtComponent({
  head (nuxtApp) {
    // `head`接收nuxt应用,但无法访问组件实例
    return {
      meta: [{
        name: 'description',
        content: '这是我的页面描述。'
      }]
    }
  }
})
</script>