Nuxt3 实战 (十二):SEO 搜索引擎优化指南

news2024/10/7 4:23:51

添加 favicon 图标和 TDK(标题、描述、关键词)

  1. nuxt.config.ts 添加配置:
export default defineNuxtConfig({
  app: {
    title:'Dream Site',
    meta: [
      { name: 'keywords', content: 'Nuxt.js,导航,网站' },
      { name: 'description', content: '致力于打造程序员的梦中情站' }
    ],
    link: [{ rel: 'icon', type: 'image/x-icon', href: 'favicon.ico' }],
    style: [],
    script: [],
    noscript: []
  }
})
  1. 使用 useHead
<script setup lang="ts">
  useHead({
   title:'Dream Site',
   link: [{ rel: 'icon', type: 'image/x-icon', href: 'favicon.ico' }],
   meta: [
     { name: 'keywords', content: 'Nuxt.js,导航,网站' },
     { name: 'description', content: '致力于打造程序员的梦中情站' }
   ]
  })
</script>
  1. 使用 useSeoMeta 组合函数
<script setup lang="ts">
 useSeoMeta({
 title: 'Dream Site',
 ogTitle: 'Dream Site',
 description: '致力于打造程序员的梦中情站',
 ogDescription: '致力于打造程序员的梦中情站',
 ogImage: 'https://example.com/image.png',
 twitterCard: 'summary_large_image',
 })
</script>
  1. /pages/ 目录中可以使用 definePageMeta 来根据当前路由设置元数据
<script setup lang="ts">
 definePageMeta({
   title: 'Dream Site'
 })
</script>
  1. 动态标题
<script setup lang="ts">
useHead({
 // 作为字符串,
 // 其中`%s`会被标题替换
 titleTemplate: '%s - Dream Site',
 // ... 或者作为一个函数
 titleTemplate: (productCategory) => {
   return productCategory
     ? `${productCategory} - Dream Site`
     : 'Dream Site'
 }
})
</script>

官方文档:SEO和Meta

安装 @nuxtjs/seo 模块

我们需要安装 @nuxtjs/seo 插件,@nuxtjs/seo 是一个模块集合,它覆盖了搜索引擎中常用的模块:

  • @nuxtjs/sitemap:网站地图
  • nuxt-simple-robots:蜘蛛爬虫协议
  • nuxt-schema-org:网页标准
  • nuxt-seo-experiments:实验性 SEO 元特征
  • nuxt-og-image:生成动态的社交分享图片
  • nuxt-link-checker:检查失效链接

具体使用方式:

  1. @nuxtjs/seo 插件:
npx nuxi@latest module add seo
  1. nuxt.config.ts 中根据实际情况添加配置:
 export default defineNuxtConfig({
   // SEO 配置
   site: {
     url: 'https://dream-site.cn',
     name: 'Dream Site',
     description: '致力于打造程序员的梦中情站',
     defaultLocale: 'zh-cn',
     exclude: ['/admin/_components/**'], // 过滤不需要的 url
     cacheMaxAgeSeconds: 24 * 3600, // 缓存时间一天
     autoLastmod: true, // 自动检测每个 URL 的 lastmod 日期
   },
   routeRules: {
     // Don't add any /secret/** URLs to the sitemap.xml
     '/admin/_components/**': { robots: false },
   }
 })

现在你就能打开 sitemap.xml 和 robots.txt 了,其他更加详细的配置可以参考官方文档:nuxt-seo

Robots

  1. 禁用网站索引
export default defineNuxtConfig({
  site: { indexable: false }
})
  1. 禁用页面索引
<script lang="ts" setup>
defineRouteRules({
  robots: false,
})
</script>
  1. 如果需要更精细的编程控制,可以使用 nuxt.config.ts 配置该模块
export default defineNuxtConfig({
  robots: {
    disallow: ['/secret', '/admin'],
  }
})

更加详细的配置可以参考官方文档:Robots

Sitemap

  1. 禁用 URL 模式的索引
export default defineNuxtConfig({
 routeRules: {
   // Don't add any /secret/** URLs to the sitemap.xml
   '/secret/**': { robots: false },
 }
})
  1. 对于所有其他情况,您可以使用 includeexclude 模块选项来过滤 url
export default defineNuxtConfig({
 sitemap: {
   // exclude all URLs that start with /secret
   exclude: ['/secret/**'],
   // include all URLs that start with /public
   include: ['/public/**'],
 }
})
  1. 设置 Lastmodchangefreqpriority
<script setup>
useSeoMeta({
  // will be inferred as the lastmod value in the sitemap
  articleModifiedTime: '2023-01-01'
})

defineRouteRules({
  sitemap: {
    changefreq: 'daily',
    priority: 0.3
  }
})
</script>
  1. 缓存时间
export default defineNuxtConfig({
  sitemap: {
   cacheMaxAgeSeconds: 3600 // 1 hour
  }
})
  1. 自定义样式
export default defineNuxtConfig({
 sitemap: {
   xslColumns: [
     { label: 'URL', width: '50%' },
     { label: 'Last Modified', select: 'sitemap:lastmod', width: '25%' },
     { label: 'Priority', select: 'sitemap:priority', width: '12.5%' },
     { label: 'Change Frequency', select: 'sitemap:changefreq', width: '12.5%' },
   ],
 },
})

更加详细的配置可以参考官方文档:Sitemap

OG Image

  1. 使用可组合 defineOgImageComponent 来定义主页的 og:image
<script lang="ts" setup>
 defineOgImageComponent('NuxtSeo')
</script>
  1. 在浏览器中访问主页并打开 Nuxt DevTools (Shift + Alt + D)
    在这里插入图片描述

  2. 自定义模板

<script lang="ts" setup>
defineOgImageComponent('NuxtSeo', {
 title: 'Hello OG Image 👋',
 description: 'Look what at me in dark mode',
 theme: '#ff0000',
 colorMode: 'dark',
})
</script>

更加详细的配置可以参考官方文档:OG Image

Schema.org

  1. 配置默认值
<script lang="ts" setup>
useSchemaOrg([
 defineWebPage({
   name: 'My Page'
 }),
 defineWebSite({
   name: 'My Site'
 })
])
</script>
  1. 如果你不想使用默认值
export default defineNuxtConfig({
 schemaOrg: {
   default: false
 }
})
  1. 设置身份类型
export default defineNuxtConfig({
 schemaOrg: {
   identity: {
     type: 'Organization', // or 'Person'
     name: 'My Company',
     url: 'https://example.com',
     logo: 'https://example.com/logo.png'
   }
 }
})
  1. 自定义节点
<script lang="ts" setup>
useSchemaOrg([
 {
   '@type': 'DefinedTerm',
   'name': 'Nuxt Schema.org',
   'description': 'Nuxt Schema.org is a Nuxt module for adding Schema.org to your Nuxt app.',
   'inDefinedTermSet': {
     '@type': 'DefinedTermSet',
     'name': 'Nuxt Modules',
   },
 }
])
</script>

更加详细的配置可以参考官方文档:Schema.org

添加 Google Analytics 统计代码

  1. 安装 nuxt-gtag:
npx nuxi@latest module add gtag
  1. nuxt.config.ts 添加配置:
export default defineNuxtConfig({
  modules: ['nuxt-gtag'],

  gtag: {
    id: 'G-XXXXXXXXXX'
  }
})
  1. 或者在环境变量中添加 NUXT_PUBLIC_GTAG_ID
NUXT_PUBLIC_GTAG_ID = G-XXXXXXXXXX

添加 Microsoft Clarity 统计代码

  1. 安装 nuxt-clarity-analytics:
pnpm add -D nuxt-clarity-analytics
  1. nuxt.config.ts 添加依赖:
export default defineNuxtConfig({
  modules: [
    'nuxt-clarity-analytics'
  ]
})
  1. 在环境变量中添加:
MICROSOFT_CLARITY_ID = 'clarity ID'

添加 Umami 统计代码

  1. 安装 nuxt-umami:
pnpm add nuxt-umami
  1. nuxt.config.ts 添加配置:
defineNuxtConfig({
  extends: ['github:ijkml/nuxt-umami']
});
  1. app.config.ts 添加配置:
export default defineAppConfig({
  umami: {
   id: '95653e90-7b8b-4541-b6de-ea5e544d8c2d',
   host: 'https://umami.baiwumm.com',
   useDirective: true,
   version: 2,
   domains: ['dream-site.cn'],
   ignoreLocalhost: true
 }
});
  1. 跟踪事件
<button v-umami="'Event-Name'">
  Event Button
</button>

<button v-umami="{name: 'Event-Name'}">
  as object
</button>

<button v-umami="{name: 'Event-Name', position: 'left', ...others}">
  with event details
</button>

详细文档:nuxt-umami

总结

Nuxt3 集成了很多 SEO Modules,使开发者能够更加高效便捷地做好搜索引擎方面的优化。

好了,这篇文章就到这了,希望对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1866247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详细解析MATLAB和Simulink中的文件格式:mat, mdl, mexw32, 和 m 文件

matlab 探索MATLAB和Simulink中的文件格式&#xff1a;MAT, MDL, MEXW32, 和 M 文件**MAT 文件 (.mat)****MDL 文件 (.mdl)****MEX 文件 (.mexw32/.mexw64)****M 文件 (.m)****总结** 探索MATLAB和Simulink中的文件格式&#xff1a;MAT, MDL, MEXW32, 和 M 文件 当你开始使用M…

JS(JavaScript)入门指南(DOM、事件处理、BOM、数据校验)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 玉阶生白露,夜久侵罗袜。 却下水晶帘,玲珑望秋月。 ——《玉阶怨》 文章目录 一、DOM操作1. D…

MySQL:内置函数、复合查询

文章目录 1.日期函数2.字符串函数3.数学函数4.其他函数5.复合查询5.1基本复合查询5.2 多表查询5.3 自连接5.4 子查询5.4.1 子查询与where5.4.2 子查询与from5.4.3 合并查询 1.日期函数 日期&#xff1a;年月日 时间&#xff1a;时分秒 日期函数的使用&#xff1a; 案例&…

print()函数——打印输出

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 print()函数是Python编程最常见的函数&#xff0c;常用于输出程序结果&#xff0c;默认输出到屏幕&#xff0c;也可以输出到指定文件。 语法参考 pr…

VNode是什么?

什么是VNode VNode的全称是Virtual Node,也就是虚拟节点.它是指一个抽象的节点对象&#xff0c;用于描述真实DOM中的元素。在前端框架中&#xff0c;通过操作VNode来实现虚拟DOM&#xff0c;从而提高性能。 VNode的本质 本质上是JavaScript对象,这个对象就是更加轻量级的对DOM…

【Windows 常用工具系列 17 -- windows bat 脚本多参数处理】

请阅读【嵌入式开发学习必备专栏】 文章目录 bat 脚本命令行参数使用示例多参数处理使用示例遍历所有参数 bat 脚本命令行参数 在Windows批处理&#xff08;.bat&#xff09;脚本中接收命令行参数是一个常见的需求&#xff0c;这样的脚本能够根据提供的参数执行不同的操作。命…

VS 在多线程中仅调试某个线程

调试多线程程序时&#xff0c;只想观察某个线程的运行情况&#xff1b; 但是&#xff0c;由于线程切换执行&#xff0c;会导致调试时焦点在几个代码块之间跳来跳去&#xff0c;故需要解决这个问题。 参考文章&#xff1a; C#使用线程窗口调试多线程程序。 1 打开线程窗口&…

Unity开发中遇到的问题以及解决思路 Ver1.0

文章目录 Git1.明明连接成功了&#xff0c;为什么显示仓库不存在&#xff1f; UI1.从Resources加载图片&#xff1a;路径没错却加载为空&#xff1f;2.滚动页面想让他只在纵向或者横向滚动怎么办&#xff1f;3.滚动页面的元素是从中间向两边生成怎么办&#xff1f;4.如何让ui物…

Yolo v5实现细节(2)

Yolo v5代码实现细节 IOU系列损失 在之前的yolo v3中我们使用的定位损失主要使用的是差值平方的形式&#xff0c;通过预测边界框的参数和真实边界框的参数来进行计算求解的。 定位损失 L loc ( t , g ) ∑ i ∈ pos ( σ ( t x i ) − g ^ x i ) 2 ( σ ( t y i ) − g ^ …

高三学生的倒计时 给高考一个倒计时 让学习更有计划的进行

高三学生的压力是很大的&#xff0c;时间也是很紧迫&#xff0c;仅仅一年的时间&#xff0c;许多人都觉得不够用&#xff0c;为了让学子们更有时间紧迫感&#xff0c;更清晰的掌握时间&#xff0c;我们需要一个准确提醒的倒计时效果。 把这个倒计时放到班级电脑上&#xff0c;是…

DataGrip 2024 po for Mac 数据库管理工具解

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff08;适合自己的M芯片版或Intel芯片版&#xff09;&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功3、打开访达&#xff0c;点击【文…

LLMs 驱动的数据合成、整理和评估

1. AI 速读 总体概要 本文综述了大型语言模型&#xff08;LLMs&#xff09;在合成数据生成、筛选和评估方面的最新进展&#xff0c;旨在为学术和工业界提供深入、系统化的研究方向。文章强调了合成数据在解决真实世界数据局限性中的重要性&#xff0c;特别是在数据量和质量方…

汇聚荣做拼多多运营,是新手怎么做?

作为电商领域的一颗新星&#xff0c;拼多多以其独特的商业模式迅速崛起&#xff0c;吸引了众多商家和消费者的目光。对于新手来说&#xff0c;如何在拼多多平台上开展运营活动&#xff0c;成为了许多初入电商领域的人们关心的问题。本文将围绕如何做好拼多多运营这一核心内容&a…

类与对象(1)

1.c升级了类 C 语言结构体中只能定义变量&#xff0c;在 C 中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。 比如&#xff1a; 之前在数据结构初阶中&#xff0c;用 C 语言方式实现的栈&#xff0c;结构体中只能定义变量 &#xff1b;现在以 C 方式实现&…

期货交易记录20240626

文章目录 期货交易系统构建第一步、选品第二步、心态历练第三步、开仓纪律第四步、持仓纪律第五步、接下来的计划 2024年6月26号&#xff0c;开始写期货交易的第四篇日记。 交易记录&#xff1a;做了一笔纯碱的多单&#xff0c;在回撤了400个点左右后&#xff0c;看到企稳信号后…

升级外贸ERP保留历史数据,拥抱技术革新赢得未来

一些做了二十多年外贸的老公司&#xff0c;早期就通过使用ERP软件来进行订单的处理&#xff0c;但是随着互联网的发展&#xff0c;用的年岁久了&#xff0c;软件运行速度也变卡了&#xff0c;看到别人家的新功能也眼馋&#xff0c;但是就是不敢升级&#xff0c;担心一升级&…

数据采集Selenium中的弹窗处理

在爬虫技术中&#xff0c;弹窗处理是一个常见但具有挑战性的问题。Selenium作为一个强大的网页自动化工具&#xff0c;可以帮助我们有效地处理网页中的各种弹窗。本文将概述如何使用Selenium处理弹窗&#xff0c;并提供实现代码&#xff0c;代码中将使用代理IP技术。 概述 弹…

前端项目vue3/React使用pako库解压缩后端返回gzip数据

pako仓库地址&#xff1a;https://github.com/nodeca/pako 文档地址&#xff1a;pako 2.1.0 API documentation 外部接口返回一个直播消息或者图片数据是经过zip压缩的&#xff0c;前端需要把这个数据解压缩之后才可以使用&#xff0c;这样可以大大降低网络数据传输的内容&…

茴香豆接入微信个人助手部署

将rag产品接入微信工作群&#xff0c;自动回答问题&#xff0c;香吗&#xff1f;&#xff1f; let‘s go 1、打开openxlab平台&#xff0c;找到茴香豆web产品应用中心-OpenXLab 点击进入&#xff0c;设置知识库名字和密码 2、上传知识库文件和编辑正反例等 3、然后进行测试问答…

Gitlab合并代码并解决冲突演示

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…