vue怎么支持seo?

前言:首先明确一个知识点,为什么vue对seo支持不友好?其次仅仅vue对seo 的支持不好吗?react呢?angular呢?答:凡是spa项目对seo都非常不友好,为什么?这个跟网络爬虫有关跟spa的特性有关。第一,网络爬虫喜欢收录原创内容,于是乎我们很常用的手段就是发文章,原创或者伪原创去勾搭爬虫引起爬虫的重视,以此增长网站的权重对吧?但是spa呢偏偏收录不了,为什么?因为spa是单文件内容,意思是项目打包后,只有一个index.html对吧,此时你写一个文章页面如:article/1.html 这个页面有文章,你希望爬虫收录,但是你的服务器有这个实际文件吗?并没有?那爬虫收录个锤子?指望爬虫给你解析前端路由??????不存在的…它就去服务器上看一眼,哎?没有文件?好吧下一家~

到此能看懂吗?如果看懂不…就好好学学基本功!

那么怎么解决这个问题?简单啊,既然爬虫根据你的路由找不到对应文件,你让它找到不就可以嘛…对吧?
so…

插件

  • npm install --save prerender-spa-plugin
  • npm install --save vue-meta-info

**这里以vue-cli为例 **

vue.config.js

const PrerenderSPAPlugin = require('prerender-spa-plugin')
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer
new PrerenderSPAPlugin({
      // Required -导出到哪里,哪个目录,注意看下相对的位置,这里是根目录
      staticDir: path.join(__dirname, 'dist'),
      // Required - Routes to render.
      routes: [ '/', '/cart', '/list'],
      renderer: new Renderer({
        inject: {
          foo: 'bar'
        },
        headless: false
      })
}),

给每个页面添加meta头部信息

main.js

//引入
import MetaInfo from "vue-meta-info";
// meta信息
Vue.use(MetaInfo);
// 注意事件名称
new Vue({
  mounted() {
    document.dispatchEvent(new Event("getSeo"));
  }
});

接下来,在每个你需要独立打包的页面添加meta信息

export default {
  metaInfo: {
    title: '这是价格页面',
    meta: [
      {
        // set meta
        name: 'keyWords',
        content: '这是价格页面关键字'
      },
      {
        name: 'description',
        content: '你好这是价格'
      }
    ]
  }
}

然后,打包吧~然后把你页面扔到服务器,路由能找到实际文件啦
哈哈,就这么简单,完啦~

最后?只有这个方法吗?no!!!
ssr~是另一种很棒的方案,但是呢…平地而起要部署的东西挺多,成本相对也高!
最后!!!!!!
你以为真解决问题了?才不是,你看看你生成的html,检查元素,看看整体的dom结构?爬虫不喜欢滴~怎么还原成格式严禁的html结构呢??我也在想,有时间研究研究

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值