元标签
从Nuxt 2到Nuxt 3管理您的元标签。
Nuxt 3提供了多种管理元标签的方式:
您可以自定义title、titleTemplate、base、script、noscript、style、meta、link、htmlAttrs和bodyAttrs。
Nuxt当前使用
Unhead来管理您的元标签,但实现细节可能会发生变化。迁移
- 在您的
nuxt.config中,将head重命名为meta。考虑将这些共享的元配置移动到您的app.vue中。(注意,对象不再具有用于去重的hid键。) - 如果您需要通过
head访问组件状态,应迁移到使用useHead。您也可以考虑使用内置的元组件。 - 如果您需要使用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>
<script setup lang="ts">
const title = ref('我的应用')
const description = ref('我的应用描述')
// 当您更改上面的title/description时,这将是响应式的
useHead({
title,
meta: [{
name: 'description',
content: description
}]
})
</script>
元组件
Nuxt 3还提供了元组件,您可以用它们来完成相同的任务。虽然这些组件看起来类似于HTML标签,但它们由Nuxt提供,并具有相似的功能。
<script>
export default {
head () {
return {
title: '我的应用',
meta: [{
hid: 'description',
name: 'description',
content: '我的应用描述'
}]
}
}
}
</script>
<template>
<div>
<Head>
<Title>我的应用</Title>
<Meta name="description" content="我的应用描述"/>
</Head>
<!-- -->
</div>
</template>
- 确保使用大写字母来命名这些组件,以区别于原生HTML元素(例如
<Title>而不是<title>)。 - 您可以将这些组件放置在页面模板的任意位置。 ::
Options API
Nuxt 3 (Options API)
<script>
// 如果使用Options API的`head`方法,您必须使用`defineNuxtComponent`
export default defineNuxtComponent({
head (nuxtApp) {
// `head`接收nuxt应用,但无法访问组件实例
return {
meta: [{
name: 'description',
content: '这是我的页面描述。'
}]
}
}
})
</script>