vue3+Nuxt3的SEO设置,即动态设置title、关键字等信息

本文中实现了,在nuxt3开发过程中先请求接口再对title、关键字、icon图标等文件进行设置并实现伪静态渲染

一、先看一下静态的设置方法

  1. 方法一、可以直接在根目录的nuxt.config.js文件中进行书写
  2. 方法二、在每个页面中进行单独的配置

方法一、 在nuxt.config.js文件中进行书写

export default defineNuxtConfig({
  app: {
    head:{
        title: '静态title',
        htmlAttrs: {
          lang: 'en'
        },
        meta: [
          { charset: 'utf-8' },
          { name: 'viewport', content: 'width=device-width, initial-scale=1' },
          { name: 'keywords', content: '静态keywords' },
          { name: 'description', content: '静态description' },
          { name: 'format-detection', content: 'telephone=no' }
          
        ],
        link: [
          { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
        ]
 
    }
  },
})

方法二、在每个页面中进行单独的head配置,在官网中提到了两个API分别是useHead、useSeoMeta,本人感觉useHead更友好一些

useHead

<script setup>
useHead({
     title: `静态title`,
    meta: [
        { name: 'description', content: `静态description` },
         { name: 'keywords', content: `静态keywords` },
    ],
})
</script>

useSeoMeta

<script setup>
useSeoMeta({
  title: '静态title',
  description: '静态description',
  keywords: '静态keywords',
})
</script>

经过测试,以上两种方法都是可以实现,当然也可以只在nuxt.config.js文件中进行一些基础的配置,具体每个页面的标题关键字 使用方法二中提到的两个API到页面中进行具体配置。

二、再来看一下如何使用接口返回的数据,对标题、关键字等信息动态的写入


<script setup>
//1、异步调用接口获取数据,不懂的可以去看一下官网文档;注意一定要异步await和useAsyncData不要去掉,否则接口没有
//返回数据useHead就执行了
const { data } = await useAsyncData(() => $fetch('/verify/getDynamicImgCode', {
    // 配置选项
}))
console.log(data.value, "data")
//2、将获取到的数据使用useHead进行设置(使用.value)
useHead({
    title: `${data.value.msg}`,
    meta: [
        { name: 'description', content: `${data.value.msg}` },
        { name: 'keywords', content: `${data.value.msg}` },
    ],
})
</script>
最后来梳理一下:
  1. 将接口改成你要调的接口,用来获取数据
  2. 将获取到的数据塞进useHead即可

注意事项

  1. 首先你要了解useAsyncData、useHead、useSeoMeta三个API
  2. 其次要注意将获取SEO信息的接口放到useAsyncData去请求才能保证成功的写入
Nuxt.js 是一个基于 Vue.js 的通用应用框架,它可以帮助我们快速构建服务器渲染的应用程序。下面是使用 Nuxt.js 实现服务器渲染并动态设置 titleSEO 关键字的步骤: 1. 首先,我们需要创建一个 Nuxt.js 项目。可以使用官方的命令行工具 `create-nuxt-app` 来快速创建一个基础项目。 2. 在项目中的 `nuxt.config.js` 文件中,我们可以通过设置 `head` 属性来动态设置页面的 titleSEO 关键字。`head` 属性是一个对象,可以包含多个属性,例如 `title`、`meta` 等。 3. 在 `head` 属性中,我们可以使用 Vue.js 的数据绑定语法来动态设置页面的 title 和 meta 标签。例如: ```javascript export default { head: { title: this.$route.meta.title, // 使用当前页面路由元信息中的 title 属性 meta: [{ hid: &#39;description&#39;, name: &#39;description&#39;, content: this.$route.meta.description // 使用当前页面路由元信息中的 description 属性 }] } } ``` 4. 值得注意的是,我们需要在路由配置文件中为每个页面设置相应的 meta 信息。可以在路由配置文件中添加 `meta` 属性,例如: ```javascript export default [ { path: &#39;/&#39;, name: &#39;home&#39;, component: &#39;pages/Home.vue&#39;, meta: { title: &#39;首页&#39;, description: &#39;欢迎访问网站首页&#39; } }, // 其他页面路由配置... ] ``` 通过以上步骤,我们可以使用 Nuxt.js 实现服务器渲染,并在页面中动态设置 titleSEO 关键字。当用户访问相应的页面时,服务器会生成带有正确 title 和 meta 标签的 HTML 响应,从而实现 SEO 优化和更好的用户体验。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值