VUE支持SEO的几种选择

最近一直在研究的东东, 趁着周末闲着不如记录下来…


SPA(单页面应用)项目对于SEO(搜索引擎优化)非常不利,爬虫爬SPA应用的时候,所有的页面源码都是下面的样子(Ctrl +U 就可以查看网页源代码)。

<html>
<head>
  <title>Single Page Application</title>
  <link rel="stylesheet" href="app.css" type="text/css">
</head>
<body>
  <div id="app"></div>
  <script src="app.js"></script>
</body>
</html>

在index.html入口文件中设置title,meta信息等是整个项目所有页面共用的,
有SEO需求页面的title,meta信息是无法定制化的,网页中的内容如商品信息等爬虫更无从知道。
因此想支持SEO,SPA需要SSR。
SSR可以在访问特定页面的时候,返回特定页面的title,meta信息以及html源码。(简单粗暴的理解,当然不止于此)

那么SPA做SSR,有几种办法呢?

1.预渲染 使用 webpack prerender-spa-plugin组件
2.vue ssr 使用 vue-server-renderer package
3.Nuxt.js 框架
4.使用prerender.io 等技术 (https://prerender.io/)

在这里比较一下几种方法的优缺点,如有差错,欢迎指正啦~

1.预渲染 使用 webpack prerender-spa-plugin组件
优点:
1.是简单,易用代价小。特别是在SPA应用开发完成阶段,如果有SEO需求的话可以采用这个方法.
2.vue-cli项目可以使用,因为vue-cli项目不支持vue-server-renderer哦!!! 想求证的可以去vue-cli的github issue中查看。
缺点:
1.只支持静态路由,动态路由不支持,例如 /good/:goodNo ,带param的路由不支持。
2.数据频繁变动的页面,不适合。
预渲染是在编译阶段生成的静态html,如果编译后数据有变化,访问页面的时候会出现先显示旧数据,再显示新数据的现象。
用户体验不佳,还可能给用户造成误会。
其实这一点可以想办法避免,具体问题具体分析。
3. 页面太多会增加编译的时间。但我觉得也不会有那么多页面需要支持SEO,这一点也可以忽略。

2.vue ssr 使用 vue-server-renderer package
优点:
就是使用vue-server-renderer可以达到SEO的效果啦,适合使用 vuejs+webpack架构的应用,而不是使用vue-cli的项目
缺点:
要配置的东西太多了,大家都在重复造轮子。

3.Nuxt.js 框架
优点:
是一个基于vue.js的支持SSR的框架,内部封装的是方法2的东西,会让开发者省去繁琐的配置和顾虑,统一一种开发风格。
如果项目处在选型阶段,并且有SEO需求,强烈推荐!!
缺点:
emmm…因为没用过,坑肯定会有吧…

4.使用prerender.io 等技术 (https://prerender.io/)
优点:
对于开发好的SPA应用,可以不动代码而是通过web服务器配置和增加一台node服务器就可以解决。
缺点:
如果seo需求超过250个页面,收费。
还需要服务器cost…

因为我们是vue-cli框架,并且项目马上要上线了,现在提出seo需求…
太南了o(╥﹏╥)o…

方法2和3果断pass,这个时候改框架,不现实。
方法1和4中二选一,因为4需要费用,最终选择了1。
但是方法1不支持动态路由,那么动态路由的页面由backend负责做服务器渲染,渲染的方法参考4的实现思路。
即nginx中追究配置,判断如果是爬虫来访,就重定向到backend走服务器渲染,否则正常访问前端页面。

下一篇预计写一下预渲染时遇到的坑以及解决方案。

本文中一部分内容,参考下面文章。
https://blog.naver.com/aha-aha/221471483565


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值