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

server/2024/9/23 0:53:37/

添加 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/**'], // 过滤不需要的 urlcacheMaxAgeSeconds: 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 /secretexclude: ['/secret/**'],// include all URLs that start with /publicinclude: ['/public/**'],}
})
  1. 设置 Lastmodchangefreqpriority
<script setup>
useSeoMeta({// will be inferred as the lastmod value in the sitemaparticleModifiedTime: '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.ppmy.cn/server/53482.html

相关文章

qmt量化交易策略小白学习笔记第49期【qmt编程之现货数据】

qmt编程之获取现货数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;咨询免费开通量化回测与获取实盘权限&#xff0c;欢迎和博主联系&#xff01; 现货数据 提示 1…

入局AI手机 苹果公布Apple Intelligence

日前&#xff0c;苹果WWDC 2024如期召开。在这持续1个小时44分钟的开发者大会上&#xff0c;苹果在前一个小时里更新了iOS、iPadOS、MacOS等操作系统&#xff0c;而且还首次更新了visionOS。余下的时间全部留给了苹果的“AI大礼包”——Apple Intelligence&#xff08;苹果智能…

【JavaScript脚本宇宙】精通前端开发:六大热门CSS框架详解

前端开发的利器&#xff1a;深入了解六大CSS框架 前言 在现代Web开发中&#xff0c;选择适合的前端框架和工具包是构建高效、响应式和美观的网站或应用程序的关键。本文将详细介绍六个广受欢迎的CSS框架&#xff1a;Bootstrap、Bulma、Tailwind CSS、Foundation、Materialize…

浅析缓存技术

缓存技术的原理 缓存技术通过在内存中存储数据副本来加速数据访问。当应用程序需要数据时&#xff0c;首先检查缓存是否存在数据副本&#xff0c;如果有则直接返回&#xff0c;否则再从原始数据源获取。这种机制大大减少了访问时间&#xff0c;提升了系统的响应速度和整体性能。…

自学黑客技术(网络安全)

一、怎样规划网络安全 如果你是一个安全行业新人&#xff0c;我建议你先从网络安全或者Web安全/渗透测试这两个方向先学起&#xff0c; 一、是市场需求量高 二、则是发展相对成熟入门比较容易 值得一提的是&#xff0c;学网络安全&#xff0c;是先网络后安全&#xff1b;学Web…

[OtterCTF 2018]Bit 4 Bit

我们已经发现这个恶意软件是一个勒索软件。查找攻击者的比特币地址。** 勒索软件总喜欢把勒索标志丢在显眼的地方&#xff0c;所以搜索桌面的记录 volatility.exe -f .\OtterCTF.vmem --profileWin7SP1x64 filescan | Select-String “Desktop” 0x000000007d660500 2 0 -W-r-…

【uniapp】uniapp开发微信小程序入门教程

HBuilderx中uniapp开发微信小程序入门教程 一、 环境搭建 1. HBuilderx下载安装 HBuilderx下载安装地址 2. 微信开发者工具下载安装 微信开发者工地址具下载安装 二、创建uniapp项目 选择&#xff1a;文件>新建>项目>uni-app 输入项目名称>选择默认模板>…

Leetcode[反转链表]

LCR 024. 反转链表 给定单链表的头节点 head &#xff0c;请反转链表&#xff0c;并返回反转后的链表的头节点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示…