首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nuxt3 实战 (十二):SEO 搜索引擎优化指南

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

原创
作者头像
白雾茫茫丶
发布于 2024-06-26 08:32:00
发布于 2024-06-26 08:32:00
9550
举报
文章被收录于专栏:Nuxt.js 实战系列Nuxt.js 实战系列

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

1、 nuxt.config.ts 添加配置:

代码语言:ts
AI代码解释
复制
 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: []
  }
})

2、 使用 useHead

代码语言:html
AI代码解释
复制
 <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>

3、 使用 useSeoMeta 组合函数

代码语言:html
AI代码解释
复制
 <script setup lang="ts">
   useSeoMeta({
   title: 'Dream Site',
   ogTitle: 'Dream Site',
   description: '致力于打造程序员的梦中情站',
   ogDescription: '致力于打造程序员的梦中情站',
   ogImage: 'https://example.com/image.png',
   twitterCard: 'summary\_large\_image',
 })
 </script>

4、/pages/ 目录中可以使用 definePageMeta 来根据当前路由设置元数据

代码语言:html
AI代码解释
复制
<script setup lang="ts">
   definePageMeta({
     title: 'Dream Site'
   })
</script>

5、 动态标题

代码语言:html
AI代码解释
复制
 <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 是一个模块集合,它覆盖了搜索引擎中常用的模块:

具体使用方式:

1、 @nuxtjs/seo 插件:

代码语言:bash
AI代码解释
复制
 npx nuxi@latest module add seo

2、 nuxt.config.ts 中根据实际情况添加配置:

代码语言:ts
AI代码解释
复制
 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.xmlrobots.txt 了,其他更加详细的配置可以参考官方文档:nuxt-seo

Robots

1、 禁用网站索引

代码语言:ts
AI代码解释
复制
 export default defineNuxtConfig({
   site: { indexable: false }
 })

2、 禁用页面索引

代码语言:html
AI代码解释
复制
 <script lang="ts" setup>
 defineRouteRules({
   robots: false,
 })
 </script>

3、 如果需要更精细的编程控制,可以使用 nuxt.config.ts 配置该模块

代码语言:ts
AI代码解释
复制
 export default defineNuxtConfig({
   robots: {
     disallow: ['/secret', '/admin'],
   }
 })

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

Sitemap

1、 禁用 URL 模式的索引

代码语言:ts
AI代码解释
复制
 export default defineNuxtConfig({
   routeRules: {
     // Don't add any /secret/** URLs to the sitemap.xml
     '/secret/**': { robots: false },
   }
 })

2、 对于所有其他情况,您可以使用 includeexclude 模块选项来过滤 url

代码语言:ts
AI代码解释
复制
 export default defineNuxtConfig({
   sitemap: {
     // exclude all URLs that start with /secret
     exclude: ['/secret/**'],
     // include all URLs that start with /public
     include: ['/public/**'],
   }
 })

3、 设置 Lastmodchangefreqpriority

代码语言:html
AI代码解释
复制
 <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>

4、 缓存时间

代码语言:ts
AI代码解释
复制
 export default defineNuxtConfig({
   sitemap: {
     cacheMaxAgeSeconds: 3600  // 1 hour
   }
 })

5、 自定义样式

代码语言:ts
AI代码解释
复制
 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

代码语言:html
AI代码解释
复制
 <script lang="ts" setup>
   defineOgImageComponent('NuxtSeo')
 </script>

2、 在浏览器中访问主页并打开 Nuxt DevTools (Shift + Alt + D)

3、 自定义模板

代码语言:html
AI代码解释
复制
 <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、 配置默认值

代码语言:html
AI代码解释
复制
 <script lang="ts" setup>
 useSchemaOrg([
   defineWebPage({
     name: 'My Page'
 }),

   defineWebSite({
     name: 'My Site'
   })
 ])
 </script>

2、 如果你不想使用默认值

代码语言:ts
AI代码解释
复制
 export default defineNuxtConfig({
 schemaOrg: {
   default: false
   }
 })

3、 设置身份类型

代码语言:ts
AI代码解释
复制
 export default defineNuxtConfig({
   schemaOrg: {
     identity: {
       type: 'Organization',  // or 'Person'
       name: 'My Company',
       url: 'https://example.com',
       logo: 'https://example.com/logo.png'
     }
   }
 })

4、 自定义节点

代码语言:html
AI代码解释
复制
 <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

代码语言:bash
AI代码解释
复制
 npx nuxi@latest module add gtag

2、 nuxt.config.ts 添加配置:

代码语言:ts
AI代码解释
复制
export default defineNuxtConfig({
   modules: ['nuxt-gtag'],
   gtag: {
     id: 'G-XXXXXXXXXX'
   }
 })

3、 或者在环境变量中添加 NUXT_PUBLIC_GTAG_ID

代码语言:env
AI代码解释
复制
 NUXT_PUBLIC_GTAG_ID = G-XXXXXXXXXX

添加 Microsoft Clarity 统计代码

1、 安装 nuxt-clarity-analytics

代码语言:bash
AI代码解释
复制
 pnpm add -D nuxt-clarity-analytics

2、 nuxt.config.ts 添加依赖:

代码语言:ts
AI代码解释
复制
 export default defineNuxtConfig({
   modules: [
     'nuxt-clarity-analytics'
   ]
 })

3、 在环境变量中添加:

代码语言:env
AI代码解释
复制
 MICROSOFT_CLARITY_ID = 'clarity ID'

添加 Umami 统计代码

1、 安装 nuxt-umami

代码语言:bash
AI代码解释
复制
 pnpm add nuxt-umami

2、 nuxt.config.ts 添加配置:

代码语言:ts
AI代码解释
复制
 defineNuxtConfig({
   extends: ['github:ijkml/nuxt-umami']
 });

3、 app.config.ts 添加配置:

代码语言:ts
AI代码解释
复制
 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
   }
 });

4、 跟踪事件

代码语言:html
AI代码解释
复制
 <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,使开发者能够更加高效便捷地做好搜索引擎方面的优化。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nuxt3 实战 (八):优雅的实现暗黑主题模式
在 Nuxt3 中要实现暗黑模式,需要用到一个库:color-mode,它可以帮助我们很轻易地实现暗黑模式切换。
白雾茫茫丶
2024/06/11
5030
Nuxt3 实战 (八):优雅的实现暗黑主题模式
Nuxt3全栈开发 · 配置篇
如果没有刻意提到的安装方式,则默认都是用 npx nuxi@latest module add xxxx 进行安装。
Aatrox
2025/01/24
4330
Nuxt3全栈开发 · 配置篇
nuxt3目录结构详解
在 Nuxt.js 3 中,一个应用程序的文件夹结构具有一定的规范性。以下是 Nuxt.js 3 的文件夹结构及其用途的详细解释:
小小孩子们
2024/02/03
3.6K0
Nuxt3 实战 (十一):添加路由 Transition 过渡效果和 Loading 动画
Nuxt3 利用 Vue 的 <Transition>组件 在页面和布局之间应用过渡效果。
白雾茫茫丶
2024/06/20
5360
Nuxt3 实战 (十一):添加路由 Transition 过渡效果和 Loading 动画
Nuxt3 实战 (七):配置 Supabase 数据库
这两天我一直在网上寻找最适合 Nuxt 的数据库,之前在做个人项目时经常用的是 Mysql 和 MongoDB,也用过 ORM 框架比如:Sequelize、TypeORM,本来计划使用 Prisma,后来认真看了 Nuxt 集成的数据库模块后,还是选择了 Supabase,在我看来主要原因有3点:
白雾茫茫丶
2024/05/24
1.1K0
Nuxt3 实战 (七):配置 Supabase 数据库
nuxt3引入element-plus的三种方法
在nuxt3项目中plugins下新建一个element-plus.client.ts文件(注意:默认必须在 plugins 下新建配置文件,这是“约定”,详情见 官网)关于为什么要加 .client 感兴趣请看:《前端渲染CSR和SSR的结合使用分析》)
你的明明呐丶
2023/01/01
5.2K1
Nuxt3 实战 (四):安装 Nuxt UI 和配置 Typescript 类型检查
对于 UI 组件库的选择,我考虑过:Ant Design Vue、Element-Plus,但感觉这两款组件库太偏向业务风格了,现在项目的搭建最好能偏年轻化一点,最后还是选择了:Nuxt UI,主要是 Nuxt UI 是 Nuxt 官方推荐的,而且完美兼容 Nuxt,并且是用 TypeScript 编写的,并为所有组件和可组合函数提供类型。
白雾茫茫丶
2024/05/22
9450
Nuxt3 实战 (四):安装 Nuxt UI 和配置 Typescript 类型检查
Nuxt.js生成sitemap.xml、seo优化、robots.txt协议添加
环境准备 注意生成sitemap依赖于@nuxtjs/sitemap,并且需要用axios进行请求,不要使用@nuxtjs/axios,不然会报错 npm install @nuxtjs/sitemap npm install axios sitemap.xml配置 在nuxt.config.js中配置下面的内容 # 在第一行引入 const axios = require('axios') # 在modules中添加@nuxtjs/sitemap modules: [ '@nuxtjs/si
嘉美伯爵
2021/01/18
5.6K0
Nuxt3 实战 (五):Header 头部布局
这两周一直忙公司系统的迭代需求,没啥时间捣鼓自己的小项目,趁着项目进入测试收尾阶段,抽空把 Layout 布局的 Header 部分先搞好。
白雾茫茫丶
2024/05/22
3850
Nuxt3 实战 (五):Header 头部布局
Nuxt3+vue-i18n国际化(巨坑!!
Nuxt3 据说是提供了 一个@nuxtjs/i18n@next。官方文档有提供引入和使用方法。
KID.
2023/11/02
3.7K5
Nuxt3 数据请求 useAsyncData/useFetch
Nuxt3 默认首屏SSR,由服务端渲染,可以通过配置 ssr:false 来取消服务端渲染
KID.
2023/10/30
4.4K0
Nuxt3 状态管理 useState && pinia
Nuxt3 封装了useState 可以用作简单的状态管理,直接定义,修改value值后,其他页面就可以同步修改状态
KID.
2023/11/01
2.3K0
Nuxt3在使用Tailwindcss情况下,如何优雅实现深色模式切换?
随着前端更新,网站设计中,深色模式也成为了一种备受欢迎的设计趋势。可以帮助用户减少眼睛的负担,同时也更加适合在光线较暗的环境下使用。
Mintimate
2023/07/31
2.4K0
Nuxt3在使用Tailwindcss情况下,如何优雅实现深色模式切换?
SEO 在 SPA 站点中的实践
观察基于 create-react-doc 搭建的文档站点, 发现网页代码光秃秃的一片(见下图)。这显然是单页应用 (SPA) 站点的通病 —— 不利于文档被搜索引擎搜索 (SEO)。
牧云云
2021/03/11
2.1K0
SEO 在 SPA 站点中的实践
Nuxt.js必读:轻松掌握运行时配置与 useRuntimeConfig
本文详细介绍了Nuxt.js中的运行时配置功能,包括定义和使用运行时配置的方法,以及如何通过useRuntimeConfig访问配置。同时,讲解了环境变量与.env文件的使用,特别是在不同环境下的配置管理。
8808.tw
2024/08/15
4730
Nuxt.js必读:轻松掌握运行时配置与 useRuntimeConfig
Nuxt3 实战 (九):使用 Supabase 实现 Github 认证鉴权
Supabase 使用的是 postgresql 的 Row Level Security (RLS),可以限制不同用户对同一张表的不同数据行的访问权限。这种安全机制可以确保只有授权用户才能访问其所需要的数据行,保护敏感数据免受未授权的访问和操作。
白雾茫茫丶
2024/06/13
4000
Nuxt3 实战 (九):使用 Supabase 实现 Github 认证鉴权
Nuxt3 实战 (十):使用 Supabase 实现 RESTful 风格 API 接口
本篇文章我们来使用 Supabase 实现 RESTful 风格的 API 接口,以此来实现网站分类和子站点的 CURD 功能。
白雾茫茫丶
2024/06/19
5075
Nuxt3 实战 (十):使用 Supabase 实现 RESTful 风格 API 接口
搜索引擎优化入门
本文适合新手老手,有不对的地方欢迎指正! 如果有什么问题或者建议,请务必留言, :-)
老高的技术博客
2022/12/27
1.2K0
搜索引擎优化入门
Nuxt3 实战 (六):Footer 底部布局
3、 这里我们顺便给 AppColorMode 组件加个切换过渡动画,让网站丰富一点:
白雾茫茫丶
2024/05/22
1970
Nuxt3 实战 (六):Footer 底部布局
[原创]Vuepress SEO优化教程(附完整方法)
真不是沪小羊吹啊,Google给沪小羊的vuepress网站的SEO水平打97分。
极客中心
2021/01/21
4.3K0
[原创]Vuepress SEO优化教程(附完整方法)
推荐阅读
相关推荐
Nuxt3 实战 (八):优雅的实现暗黑主题模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档