备案 控制台
开发者社区 开发与运维 文章 正文

Vue.js - 基于 Vue SEO 四种方案(三)

简介: Vue.js - 基于 Vue SEO 四种方案(三)

3、预渲染prerender-spa-plugin

如果你只是用来改善少数营销页面(例如 /, /about, /contact 等)的 SEO,那么你可能需要预渲染。无需使用 web 服务器实时动态编译 HTML,而是使用预渲染方式,在构建时 (build time) 简单地生成针对特定路由的静态 HTML 文件。优点是设置预渲染更简单,并可以将你的前端作为一个完全静态的站点。


$ cnpm install prerender-spa-plugin --save

vue cli 3 vue.config.js配置:


const PrerenderSPAPlugin = require('prerender-spa-plugin');
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
const path = require('path');
module.exports = {
    configureWebpack: config => {
        if (process.env.NODE_ENV !== 'production') return;
        return {
            plugins: [
                new PrerenderSPAPlugin({
                    // 生成文件的路径,也可以与webpakc打包的一致。
                    // 下面这句话非常重要!!!
                    // 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。
                    staticDir: path.join(__dirname,'dist'),
                    // 对应自己的路由文件,比如a有参数,就需要写成 /a/param1。
                    routes: ['/', '/product','/about'],
                    // 这个很重要,如果没有配置这段,也不会进行预编译
                    renderer: new Renderer({
                        inject: {
                            foo: 'bar'
                        },
                        headless: false,
                        // 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。
                        renderAfterDocumentEvent: 'render-event'
                    })
                }),
            ],
        };
    }
}

在main.js中添加:

new Vue({
  router,
  render: h => h(App),
  mounted () {
    document.dispatchEvent(new Event('render-event'))
  }
}).$mount('#app')

注意:router中必须设置 mode: “history”

打包出来可以看见文件,打包出文件夹/index.html,例如:about => about/index.html,里面有html内容。

优势:

  • 改动小,引入个插件就完事;

不足:

  • 无法使用动态路由;
  • 只适用少量页面的项目,页面多达几百个的情况下,打包会很很很慢;\


4、使用Phantomjs针对爬虫做处理

Phantomjs是一个基于webkit内核的无头浏览器,即没有UI界面,即它就是一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。

虽然“PhantomJS宣布终止开发”,但是已经满足对Vue的SEO处理。

这种解决方案其实是一种旁路机制,原理就是通过Nginx配置,判断访问的来源UA是否是爬虫访问,如果是则将搜索引擎的爬虫请求转发到一个node server,再通过PhantomJS来解析完整的HTML,返回给爬虫。


image.png


具体代码戳这里: vue-seo-phantomjs

要安装全局phantomjs,局部express,测试:


$ phantomjs spider.js 'https://www.baidu.com'

如果见到在命令行里出现了一推html,那恭喜你,你已经征服PhantomJS啦。

启动之后或者用postman在请求头增加User-Agent值为Baiduspider,效果一样的。

部署上线

线上要安装nodepm2phantomjs,nginx相关配置:

upstream spider_server {
  server localhost:3000;
}
server {
    listen       80;
    server_name  example.com;
    location / {
      proxy_set_header  Host            $host:$proxy_port;
      proxy_set_header  X-Real-IP       $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      if ($http_user_agent ~* "Baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator|bingbot|Sosospider|Sogou Pic Spider|Googlebot|360Spider") {
        proxy_pass  http://spider_server;
      }
    }
}

优势:

  • 完全不用改动项目代码,按原本的SPA开发即可,对比开发SSR成本小不要太多;
  • 对已用SPA开发完成的项目,这是不二之选。

不足:

  • 部署需要node服务器支持;
  • 爬虫访问比网页访问要慢一些,因为定时要定时资源加载完成才返回给爬虫;
  • 如果被恶意模拟百度爬虫大量循环爬取,会造成服务器负载方面问题,解决方法是判断访问的IP,是否是百度官方爬虫的IP。

总结

如果构建大型网站,如商城类,别犹豫,直接上SSR服务器渲染,当然也有相应的坑等你,社区较成熟,英文好点,一切问题都迎刃而解。

如果只是个人博客、公司官网这类,其余三种都可以。

如果对已用SPA开发完成的项目进行SEO优化,而且支持node服务器,请使用Phantomjs

Lux_Sun
目录
相关文章
1941623231718325
|
3天前
|
资源调度 JavaScript 前端开发
Vue的路由管理:VueRouter的配置和使用
【4月更文挑战第24天】VueRouter是Vue.js的官方路由管理器,用于在单页面应用中管理URL路径与组件的映射。通过安装并引入VueRouter,设置路由规则和创建router实例,可以实现不同路径下显示不同组件。主要组件包括:`<router-link>`用于创建导航链接,`<router-view>`负责渲染当前路由对应的组件。此外,VueRouter还支持编程式导航和各种高级特性,如嵌套路由、路由参数和守卫,以应对复杂路由场景。
1941623231718325
28 2
还在路上的秃头
|
1天前
|
监控 JavaScript
Vue中的数据变化监控与响应——深入理解Watchers
Vue中的数据变化监控与响应——深入理解Watchers
还在路上的秃头
6 0
wscwdie
|
1天前
|
JavaScript 安全 前端开发
Vue 项目中的权限管理:让页面也学会说“你无权访问!
Vue 项目中的权限管理:让页面也学会说“你无权访问!
wscwdie
10 3
wscwdie
|
1天前
|
JavaScript 前端开发 开发者
Vue的神奇解锁:冒险的开始
Vue的神奇解锁:冒险的开始
wscwdie
5 1
渐暖
|
2天前
|
JavaScript 前端开发
【vue】iview如何把input输入框和点击输入框之后的边框去掉
【vue】iview如何把input输入框和点击输入框之后的边框去掉
渐暖
8 0
渐暖
|
2天前
|
JavaScript
【vue实战】父子组件互相传值
【vue实战】父子组件互相传值
渐暖
8 1
yma16
|
2天前
|
JavaScript
vue2_引入Ant design vue
vue2_引入Ant design vue
yma16
8 0
谢妹纸
|
2天前
|
JavaScript
vue知识点
vue知识点
谢妹纸
11 4
即兴小索奇
|
3天前
|
存储 JavaScript
报错permission.js:41 [Vue warn]: Property “showClose“ must be accessed with “$data.showClose“ because
报错permission.js:41 [Vue warn]: Property “showClose“ must be accessed with “$data.showClose“ because
即兴小索奇
8 0
即兴小索奇
|
3天前
|
存储 JavaScript 前端开发
【Vue】绝了!这生命周期流程真...
【Vue】绝了!这生命周期流程真...
即兴小索奇
10 0

热门文章

最新文章

  • 1
    vue项目开发笔记记录(一)
  • 2
    vue项目开发笔记记录(二)
  • 3
    vue项目实战:实战技巧总结(中)
  • 4
    Vue3——Router4教程(小满版本)(二)
  • 5
    vue项目开发笔记记录(四)
  • 6
    VUE获取上月、当月、前几月等等问题
  • 7
    vue核心语法2
  • 8
    vue组件之间互相传值
  • 9
    vue element plus Input 输入框
  • 10
    【vue报错】error:0308010C:digital envelope routines::unsupported
  • 1
    监控内网电脑软件设计与实现:基于Node.js的服务器端架构分析
    105
  • 2
    Java Script 中的垃圾回收机制有哪些缺点
    13
  • 3
    描述 JavaScript 中的垃圾回收机制。
    20
  • 4
    如何使用 JavaScript 操作 DOM?
    15
  • 5
    解释 JavaScript 中的`map()`、`filter()`和`reduce()`方法的用途。
    19
  • 6
    JavaScript 中的数组方法有哪些?
    10
  • 7
    JS设置日期为0时0分0秒
    28
  • 8
    JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
    24
  • 9
    JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
    21
  • 10
    深入理解JavaScript中的闭包与作用域链
    9
  • 相关课程

    更多
  • Spring Boot+Vue.js+FastDFS实现分布式图片服务器
  • JavaScript入门与实战
  • Vue.js 入门与实战
  • Vue.js完全自学手册图文教程
  • JavaScript 自学手册文档教程
  • React 入门与实战
  • 相关电子书

    更多
  • Vue.js 在前端服务化上的探索与实践
  • Vue.js在前端服务化上的实践与探索
  • 利用编译将 Vue 组件转成 React 组件
  • 相关实验场景

    更多
  • Html5和Webpack2:Webpack5打包JS和样式表
  • 前端开发基础6:Node.js和LESS预编译工具
  • 下一篇
    部署LAMP环境(Alibaba Cloud Linux 3)

    资讯网seo什么是关键词网站开发页面设计2020梁姓男孩起名国考优秀作文山西区号成熟有魅力的个性签名武汉seo学校网络营销推广服务公司破解校花梦工厂世界考古未解之谜中国是谁起名的电脑耳机没声音怎么设置园林起名大全集成都网站设计哪家公司好如何做seo关键词占有欲超强的情侣网名杰哥不要啦水产门店起名大全在线设计网站设计姓李的鼠宝宝起名大全男宝女宝石姓起名男孩姓袁起名鼠年生人起名宜用字八字起名打分免费测试方法灯光音响公司起名高端网站定制建设公司哪家好孩子起名需要找大师吗陕西科技大学镐京学院怎么样伤感,累了情侣起名配对少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

    资讯网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化