seo-使用nuxt定义页面标题和meta等信息

nuxt-seo-定义单页面的标题和meta元信息

1.Nuxt 3+版本

全局配置 :nuxt.config.ts 中配置即可
页面级配置: useHead 组合式 API(推荐)

javascript 复制代码
<script setup>
import { useHead } from '@unhead/vue'
// 静态配置
useHead({
  title: '默认标题',
  meta: [
    { name: 'description', content: '默认描述' }
  ],
  link:[
	{
	  rel: "icon",
      type: "image/png",
      href: "/favicon.png"
    }
  ]
})
// 动态配置(结合 ref),可以从路由信息中获取,也可从从接口获取title内容
const dynamicTitle = ref('初始标题')
useHead({
  title: dynamicTitle.value // 自动响应更新
  // title.useRoute().meta.title //从路由信息中获取
})
// 修改动态标题
setTimeout(() => {
  dynamicTitle.value = '新标题'
}, 3000)
</script>

动态 设置示例(如从 API 获取)

javascript 复制代码
<script setup>
import { useAsyncData } from 'nuxt/app'
const { data: seoData } = await useAsyncData('seo', () => {
  return $fetch('/api/seo-data') // 从 API 获取 SEO 数据
})
useHead({
  title: seoData.value.title,
  meta: [
    { name: 'description', content: seoData.value.description }
  ]
})
</script>

2.区分definePageMeta(定义路由信息)

用途: 配置页面级路由行为和 Nuxt 框架相关设置
作用域: 只能在 pages/ 目录下的组件中使用

javascript 复制代码
//这里的title是路由的标题,不是页面的title
definePageMeta({
  // 路由相关配置
  name: 'custom-route-name',     // 自定义路由名称
  path: '/custom/:id',           // 覆盖文件系统路由
  alias: ['/alt-path'],           // 路由别名
  // 布局控制
  layout: 'admin-layout',         // 指定使用的布局
  // 路由行为
  middleware: ['auth'],           // 应用的中间件
  pageTransition: { name: 'fade' }, // 页面过渡效果
  // 验证路由参数
  validate: (route) => /^\d+$/.test(route.params.id),
  // SEO 相关(需配合 useHead 使用)
  title: '默认标题',              // 不会直接设置 HTML title
});
//下面可以useHead使用路由信息
相关推荐
吹牛不交税6 小时前
admin.net-v2 框架使用笔记-netcore8.0/10.0版
vue.js·.netcore
MZ_ZXD0017 小时前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·vue.js·spring boot·python·django·php
yuanmenghao9 小时前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix
_codemonster9 小时前
Vue的三种使用方式对比
前端·javascript·vue.js
wqq631085511 小时前
Python基于Vue的实验室管理系统 django flask pycharm
vue.js·python·django
Deng94520131411 小时前
Vue + Flask 前后端分离项目实战:从零搭建一个完整博客系统
前端·vue.js·flask
Hello.Reader12 小时前
Flink 文件系统通用配置默认文件系统与连接数限制实战
vue.js·flink·npm
EchoEcho13 小时前
深入理解 Vue.js 渲染机制:从声明式到虚拟 DOM 的完整实现
vue.js
叶智辽14 小时前
【ThreeJS实战】从86MB到4MB:复杂模型加载优化黑魔法
性能优化·three.js
C澒14 小时前
Vue 项目渐进式迁移 React:组件库接入与跨框架协同技术方案
前端·vue.js·react.js·架构·系统架构