Nuxt Nation 大会即将到来。加入我们,时间为 11 月 12 日至 13 日。

元标签

了解如何从 Nuxt 2 迁移到 Nuxt Bridge 的新元标签。

如果您需要使用 head 访问组件状态,则应迁移到使用 useHead

如果您需要使用 Options API,则可以使用 head() 方法,前提是您使用 defineNuxtComponent

迁移

设置 bridge.meta

import { defineNuxtConfig } from '@nuxt/bridge'
export default defineNuxtConfig({
  bridge: {
    meta: true,
    nitro: false // If migration to Nitro is complete, set to true
  }
})

更新 head 属性

在您的 nuxt.config 中,将 head 重命名为 meta。(请注意,对象不再具有用于重复数据删除的 hid 键。)

export default {
  head: {
    titleTemplate: '%s - Nuxt',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: 'Meta description' }
    ]
  }
}

useHead 组合式 API

Nuxt Bridge 提供了一个新的 Nuxt 3 元 API,可以通过新的 useHead 组合式 API 访问。

<script setup lang="ts">
useHead({
  title: 'My Nuxt App',
})
</script>
useHead 组合式 API 在后台使用 @unhead/vue(而不是 vue-meta)来操作您的 <head>
我们建议不要同时使用原生的 Nuxt 2 head() 属性和 useHead ,因为它们可能会发生冲突。

有关如何使用此组合式 API 的更多信息,请参阅 文档

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>
潜在的破坏性更改:head 接收 nuxt 应用,但无法访问组件实例。如果 head 中的代码尝试通过 thisthis.$data 访问数据对象,则需要迁移到 useHead 组合式 API。

标题模板

如果您想使用函数(以获得完全控制权),则不能在您的 nuxt.config 中设置它,建议改为在您的 /layouts 目录中设置它。

layouts/default.vue
<script setup lang="ts">
useHead({
  titleTemplate: (titleChunk) => {
    return titleChunk ? `${titleChunk} - Site Title` : 'Site Title';
  }
})
</script>