VUE3 SEO临时方案

问题背景

        前端小白开发了一个vue3的项目,并通过网上的各种方法设置了meta等信息。打开页面后也能看到tilte、keywords等信息。但是用站长工具分析SEO,只能分析是网站title是Vite APP,其他都分析不出来。

  • 有问题的vue3代码

router的index.js

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'home',
      component:Home,
      meta:{

        title:'食未网',
        subject:'美食、打卡',
        abstract:'汇总UP主吃过的餐厅',
        keywords:'二百者也,隋卞,唐仁杰,盗月社,真探,探店,高文麟,吃什么,美食推荐,美食',
        description:'食未网汇总各大UP主探店餐厅的地址信息等,旅游、出行吃饭必看。快来打卡UP主吃过的餐厅吧!',
      }
    },
 ]
})
export default router

main.js

router.beforeEach((to, from, next) => {
    document.title = to.meta.title || 'Default Title';// 使用元数据中的标题,如果没有则使用默认标题

    let titleMeta = document.querySelector('meta[name="title"]');
    if (!titleMeta) {
        titleMeta = document.createElement('meta');
        titleMeta.name = 'title';
        document.head.appendChild(titleMeta);
        titleMeta.content = to.meta.title;
    }
    let keywordsMeta = document.querySelector('meta[name="keywords"]');
    if (!keywordsMeta) {
        keywordsMeta = document.createElement('meta');
        keywordsMeta.name = 'keywords';
        document.head.appendChild(keywordsMeta);
        keywordsMeta.content = to.meta.keywords;
    }
    let descriptionMeta = document.querySelector('meta[name="description"]');
    if (!descriptionMeta){
        descriptionMeta = document.createElement('meta');
        descriptionMeta.name = 'description';
        document.head.appendChild(descriptionMeta);
        descriptionMeta.content = to.meta.description;
    }
    let subjectMeta = document.querySelector('meta[name="subject"]');
    if (!subjectMeta){
        subjectMeta = document.createElement('meta');
        subjectMeta.name = 'subject';
        document.head.appendChild(subjectMeta);
        subjectMeta.content = to.meta.subject;
    }

    let abstractMeta = document.querySelector('meta[name="abstract"]');
    if (!abstractMeta){
        abstractMeta = document.createElement('meta');
        abstractMeta.name = 'abstract';
        document.head.appendChild(abstractMeta);
        abstractMeta.content = to.meta.abstract;
    }

    next(); // 确保调用 next() 方法以确保导航继续进行。
});
  • 实现的效果

站长工具检测 只能分析是网站title是Vite APP,其他都分析不出来(懒得倒回放图了)

问题原因

大概是vue3的页面是前端执行js渲染的,刚打开页面食没有meta这些信息,而爬虫不会执行js,所以就不会读到js执行后的meta信息。

经过一系列的折腾,但是发现dist目录是有一个index.html文件的,原来seo读的是这个tilte。

解决方法

百度、bing、chatGPT都问了,有什么SSR、预渲染等方案。经过一天的折腾,没搞成功。

所以最后我简单粗暴的在dist中的index.html添加了 title、keywords等

最后站长工具分析

总结

vue3中的SEO问题,我是通过修改dist中的index.html文件去解决的。不知道最后百度的效果怎么样。技术能力有限,仅供参考。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3的SEO优化可以通过预渲染来实现。预渲染是一种在构建时生成针对特定路由的静态HTML文件的方法,可以将你的前端应用作为一个完全静态的站点。下面是两种实现Vue 3 SEO优化的方法: 1. 使用预渲染插件:你可以使用预渲染插件来生成静态HTML文件。一个常用的预渲染插件是`prerender-spa-plugin`。你可以在构建时简单地生成针对特定路由的静态HTML文件。这样,搜索引擎爬虫就可以直接看到你的页面内容,提高了SEO效果。 2. 默认根节点隐藏:另一种解决方案是在预渲染的HTML文件中默认隐藏根节点,然后在合适的时机再显式出来。这样可以避免在初始加载时显示空白页面,提升用户体验。你可以通过在根节点上添加`v-cloak`指令,并在CSS中设置该指令的样式来实现默认隐藏。 下面是一个示例,演示了如何使用预渲染插件和默认根节点隐藏来实现Vue 3的SEO优化: ```javascript // 配置预渲染插件 const PrerenderSPAPlugin = require('prerender-spa-plugin'); module.exports = { // ...其他配置 configureWebpack: { plugins: [ new PrerenderSPAPlugin({ staticDir: path.join(__dirname, 'dist'), routes: ['/', '/about', '/contact'], // 需要预渲染的路由 }), ], }, }; ``` ```html <!-- 在根节点上添加v-cloak指令 --> <div id="app" v-cloak> <!-- 页面内容 --> </div> <!-- 在CSS中设置v-cloak的样式 --> <style> [v-cloak] { display: none; } </style> ``` 请注意,以上方法只是Vue 3的SEO优化的两种常见方法之一。根据你的具体需求和项目情况,可能还有其他方法可以实现SEO优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值