Nuxt 中 useSeoMeta 与 useHead 的区别

在 Nuxt 3 中,页面标题和 SEO 元信息可以通过 useSeoMeta() 或 useHead() 设置。两者功能有重叠,但定位不同:useSeoMeta() 专注于 SEO 元标签,useHead() 则用于管理整个 HTML <head>。

useHead 可以设置页面标题吗?

可以。useHead() 能设置 title、meta、link、script 等内容:

php 复制代码
useHead({
  title: '手冲咖啡指南',
  meta: [
    {
      name: 'description',
      content: '介绍手冲咖啡的器具与冲煮方法。',
    },
  ],
  link: [
    {
      rel: 'canonical',
      href: 'https://example.com/coffee',
    },
  ],
})

Nuxt 会根据配置生成对应的 <head> 内容。

useSeoMeta 是什么?

useSeoMeta() 是专门设置 SEO 和社交分享元信息的接口。它使用更直观的字段名,也提供类型提示:

php 复制代码
useSeoMeta({
  title: '手冲咖啡指南',
  description: '介绍手冲咖啡的器具与冲煮方法。',
  ogTitle: '手冲咖啡指南',
  ogDescription: '新手也能看懂的冲煮指南。',
  ogType: 'article',
  twitterCard: 'summary',
})

例如,description 对应普通描述元标签,ogTitle 对应 Open Graph 标题,twitterCard 对应 Twitter/X 卡片类型。

两者的主要区别

对比项 useSeoMeta() useHead()
主要用途 设置 SEO、社交分享元信息 管理整个 <head>
页面标题 支持 支持
Meta 标签 SEO 常用字段 可以设置任意 meta 标签
Canonical 链接 不适合直接管理 支持
JSON-LD 脚本 不适合直接管理 支持
使用特点 字段语义明确,适合常见 SEO 配置 灵活,适合通用 head 配置

实际项目中怎么选?

简单页面可以只用 useSeoMeta():

php 复制代码
useSeoMeta({
  title: '产品介绍',
  description: '了解产品功能与使用方式。',
})

如果还需要设置 canonical、图标、JSON-LD 或其他 <head> 内容,可以配合 useHead():

php 复制代码
<script setup lang="ts">
const title = '手冲咖啡指南'
const description = '介绍手冲咖啡的器具与冲煮方法。'
const url = 'https://example.com/coffee'

useSeoMeta({
  title,
  description,
  ogTitle: title,
  ogDescription: description,
  ogUrl: url,
  ogType: 'article',
})

useHead({
  link: [{ rel: 'canonical', href: url }],
  script: [
    {
      type: 'application/ld+json',
      innerHTML: JSON.stringify({
        '@context': 'https://schema.org',
        '@type': 'Article',
        headline: title,
        description,
        mainEntityOfPage: url,
      }),
    },
  ],
})
</script>

总结

useHead() 当然可以设置 title ,也能设置 SEO 元信息;useSeoMeta() 则是为 SEO 字段设计的便捷接口。常见做法是用 useSeoMeta() 设置标题、描述和社交分享信息,用 useHead() 设置 canonical、JSON-LD 等通用内容。两者可以在同一页面配合使用。

相关推荐
竹林8181 小时前
OmniGame 技术白皮书:从零依赖到 WebRTC P2P,重新定义网页小游戏的工程上限
前端·浏览器
ss2731 小时前
AI全栈实战 | 2.1-02 CSS 布局:垂直居中为什么是经典面试题?所有布局在解决什么矛盾
前端·css
律宏阔1 小时前
Flutter Riverpod 3:统一打印 Provider 错误与自动重试日志
前端·flutter
周洲08301 小时前
STM32片内Flash读写深度详解|掉电参数保存、底层原理
linux·前端·stm32
data analyse 4562 小时前
埋点工具的私有化部署成本高吗?
前端·数据分析·github
data analyse 4562 小时前
埋点工具的埋点查询语言难学吗?
前端·数据分析
DianSan_ERP3 小时前
多平台订单自动下载与回传的技术实现:从消息推送到状态闭环引言
java·linux·服务器·前端·网络·架构·自动化
恋猫de小郭3 小时前
Shopify 回应为什么从 RN 回到原生,为什么不用 KMP ?
android·前端·flutter
小蜗 strong3 小时前
和电脑猜拳(随机程序应用)
服务器·前端·python