Мета-теги
Управление мета-тегами, от Nuxt 2 до Nuxt 3.
Nuxt 3 предоставляет несколько способов управления мета-тегами:
- Через ваш
nuxt.config. - С помощью композабла
useHead - С помощью глобальных компонентов мета-тегов
Вы можете настраивать title, titleTemplate, base, script, noscript, style, meta, link, htmlAttrs и bodyAttrs.
В настоящее время Nuxt использует
vueuse/head для управления мета-тегами, но детали реализации могут измениться.Миграция
- В
nuxt.config, переименуйтеheadвmeta. Рассмотрите возможность перемещения этой общей конфигурации мета-тегов вapp.vue. (Обратите внимание, что объекты больше не имеют ключаhidдля устранения дубликатов.) - Если вам нужен доступ к состоянию компонента с помощью
head, вам следует мигрировать на использованиеuseHead. Вам также может быть полезно использовать встроенные мета-компоненты. - Если вам нужно использовать Options API, есть метод
head(), который вы можете использовать при использованииdefineNuxtComponent.
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>
- Убедитесь, что вы используете прописные буквы для этих имен компонентов, чтобы отличать их от нативных элементов HTML (
вместо <title>). - Вы можете размещать эти компоненты в любом месте шаблона вашей страницы.
Параметры API
Nuxt 3 (Options API)
<script>
// если используется метод `head` Options API, необходимо использовать `defineNuxtComponent`
export default defineNuxtComponent({
head (nuxtApp) {
// `head` получает приложение nuxt, но не может получить доступ к экземпляру компонента
return {
meta: [{
name: 'description',
content: 'Это описание моей страницы.'
}]
}
}
})
</script>