vue cli中使用预渲染技术解决SEO对SPA不友好问题

news/2024/5/20 12:31:57/文章来源:https://blog.csdn.net/gegegegege12/article/details/122433302

单页面应用(SPA)对于SEO不友好的问题可以通过预渲染(Prerender)和服务端渲染(SSR)技术解决
本文主要记录预渲染技术在vue cli构建的项目中的使用
用到插件prerender-spa-pluginvue-meta-info

内容

  • 1. 引入依赖 prerender-spa-plugin
  • 2. vue.config.js配置
  • 3. 在main.js 添加监听方法
  • 4. 配置meta参数
  • 为什么SEO对单页面应用SPA不友好
  • 预渲染图解过程


示例基于
vue:“^2.6.11”
vue-cli:“~4.5.0”

⚠️:router 中路由模式一定要修改为 history 才能生效,hash模式生成的页面都是一样的

1. 引入依赖 prerender-spa-plugin

npm i prerender-spa-plugin --save-dev

prerender-spa-plugin的主要原理是启动浏览器,渲染完成后抓取HTML,然后再替换掉原有HTML

2. vue.config.js配置

vue-cli4.x项目默认没有vue.config.js(3.x同样没有),请手动创建
配置如下:
基本不需要修改,除了routes那里的配置,要改成你自己的路由

const PrerenderSPAPlugin = require('prerender-spa-plugin');
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
const path = require('path');
module.exports = {configureWebpack: () => {return {plugins: [new PrerenderSPAPlugin({// 输出预渲染文件的目录staticDir: path.join(__dirname, 'dist'),// 预渲染的路由,对应自己的路由文件// ⚠️:这里配不了动态路由 要传参的也不行routes: ['/home', '/project', '/develop','/develop/us','/develop/managers','/develop/activities','/develop/items'],// 要使用的渲染器的配置renderer: new Renderer({// 触发渲染的时间,用于获取数据后再保存渲染结果renderAfterTime: 5000,// 等待渲染,直到文档上调度指定的事件// 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。renderAfterDocumentEvent: 'render-event'})}),],};}
};

更多配置访问
https://github.com/chrisvfritz/prerender-spa-plugin#about-prerender-spa-plugin

3. 在main.js 添加监听方法

此方法名要跟上面的 vue.config.js 中配置的renderAfterDocumentEvent一致

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

这时候npm run build,生成的文件是每个路由都会对应一个index.html
在这里插入图片描述

4. 配置meta参数

要使用到插件vue-meta-info

vue-meta-info 是一个基于vue 2.0的插件,它会让你更好的管理你的 app 里面的 meta 信息。你可以直接 在组件内设置 metaInfo 便可以自动挂载到你的页面中。当然,有时候我们也可能会遇到让人头疼的SEO问题,那么使用此插件配合 prerender-spa-plugin 也是再合适不过了

安装:

npm install vue-meta-info --save

引入:

// main.js
import MetaInfo from 'vue-meta-info';
Vue.use(MetaInfo);

组件内使用:
每个组件都可以设置不同的配置项

export default {name: "Home",metaInfo: {meta: [{name: "keywords",content:"...",},{name: "description",content:"...",},],},
}

具体步骤已经结束了,下面简易记录一下

为什么SEO对单页面应用SPA不友好

  • 搜索引擎蜘蛛(网络爬虫)自动抓取网页内容时,会分析页面内容,例如:从 meta 标签中读取 keywords 、 description 的内容、根据语义化的 html 的标签爬取和分析内容
  • 搜索引擎蜘蛛在爬取的过程中,不会去执行js,所以隐藏在js中的跳转也不会获取到,vue通过js控制路由然后渲染出对应的页面,而搜索引擎蜘蛛是不会去执行页面的js的,导致搜索引擎蜘蛛只能收录index.html一个页面,在百度中就搜索不到相关的子页面的内容

预渲染图解过程

在这里插入图片描述
在打包结束并生成文件之后,会启动一个server模拟网站运行来访问指定的页面,得到相应的html结构并输出到指定目录里
由于是先生成内容再生成html文件,这样网络爬虫就能爬取到网站的内容


本文参考:
https://blog.csdn.net/weixin_30852391/article/details/111915355
https://blog.csdn.net/qq_40893035/article/details/111643676?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0.no_search_link&spm=1001.2101.3001.4242.1&utm_relevant_index=3
https://blog.csdn.net/qq_37564189/article/details/106090414
https://blog.csdn.net/weixin_42899690/article/details/120556911

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_823917.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

allegro如何导入中文丝印_SEO优化中导入链接的相关知识

什么是导入链接?导入链接(Inbound Link)即指向你的网站的其他网站的URL。搜索引擎认为,如果你的网站有价值,其他网站会提到你的网站;被提到的次数越多,就说明网站的价值越高。将导入链接纳入排名重要指标的…

vue+springboot 制作属于自己的个人网站 ① vue前端部署

一、准备工作 1.1 下载node vue ① 下载 node node.js下载地址:建议下载稳定版Node.jshttps://nodejs.org/zh-cn/ ② 下载vue 在控制台输入如下指令 npm install -g vue/cli 1.2 租用xx云服务器,这里以阿里云服务器为例 建议百度 阿里云/华为云/百…

vue+springboot 制作属于自己的个人网站 ② spring boot后端部署

一、阿里云服务器安装MySQL ① 阿里云服务器操作系统查看: ② 推荐安装流程 阿里云服务器 linux系统安装mysql8.0.20,超详细步骤_长腿欧巴~的博客-CSDN博客 其中需要注意的是 (1)强力卸载之前安装mysql的命令: yum …

树展示 移动端_百度移动端开始用网站品牌名代替网址显示

最近,有站长发现,百度移动端最近做了部分改版:移动端部分网站域名开始逐渐被网站相关名称代替,PC端还是用域名展示,卢松松博客网站域名也被替换成网站品牌名显示!百度移动端用网站相关名称代替网址显示这波改版细节。简…

nginx部署网站

nginx部署网站源码编译的nginxyum安装的nginx源码编译的nginx cd /usr/local/nginx/html # 源码编译默认位置把里面所有文件删掉或是只删掉index.html 不想删掉也可以更改文件名 # 任选其一 rm -rf * rm -rf index.html mv index.html 111 # 111 为你要改成的名字接下来就可…

spark网站日志分析实例

文章目录网站日志分析实例日志过滤日志分析网站日志分析实例 日志是非结构化数据,做分析需要先将日志文件做数据清洗。将数据清洗为结构化数据,入库分析。 另外,还有考虑数据的管理,譬如日志数据增量更新等等。针对数据量大&…

网址添加html 301,通过修改.htaccess批量实现网站内页301重定向跳转 | 甄选网

网站死链有时候是不可避免的,网站栏目页或者文章内页因为某些原因调整了路径,如果想保留之前的链接就需要做301跳转。网站首页的301重定向容易做,不过内页的301就相对复杂一些,通过修改.htaccess文件可以轻松完成这项工作。htacce…

手机通过IP访问电脑(端口、网站),手机以及电脑IP查看,防火墙开放指定端口设置。

1.通过IP互访: 手机电脑须在同一局域网(网段)下。 提示:如果连接没有问题,仍无法访问。需要开放电脑防火墙。可以全开也可以开放特定端口。 方法请看最下面 2.操作: 1.电脑开移动热点手机连热…

vs2010发布网站

发布网站步骤: 1、新建网站:打开IIS,右击网站——>添加网站填写网站名称(随便写)和应用程序池名称物理路径选择你要存放发布网站的位置(最好自己新建一个空的文件夹)点击身份验证下的链接为—…

页面布局_常见的几种网站页面结构与关键词布局技巧!

网站页面布局是网站站内优化的一个重要组成部分;而网站站内优化却又是一个网站最终是否能够冲入百度首页甚至前三的最关键要点。因此,如何做网站页面布局更有利于排名?关于这一点小编分几点去讲述:一、网站站内结构布局1、代码的布…

dw添加下拉菜单_用dreamweaver制作网站下拉菜单的实现教程

在设计网页时,需要添加下拉菜单并向下拉菜单添加列表值,让我们一起进入下文看一下爱站技术频道小编用dreamweaver制作网站下拉菜单的实现教程,感兴趣的小伙伴们可以参考一下。打开软件,我们按快捷键ctrln,建立一个新的…

Asp.net网站部署时遇到的一些问题

很少部署网站,这几天有一个网站帮朋友部署,期间遇到一些问题,经查找各种网络资源,最终解决,先将遇到的问题及解决办法分享一下。 系统 Win7iis7.5sqlserver2008.Net 4.0 启动IIS,运行->Inetmgr&#x…

服务器如何从bios修改mac,BIOS维修网站www.biosrepair.com-用编程器修改网卡MAC地址

朋友一个软件绑定了网卡的MAC地址,由于原网卡损坏,造成软件无法正常运行;重新找了一款DFE-530TX的网卡,当然由于MAC与原网卡不一样,软件还是无法运行的;因此需要将DFE-530TX网卡的MAC修改成原网卡的才可&am…

微信开发php案例分析,微信开发微网站之jquery_mobile案例分析

这节课我们主要用到到jquery_mobile来实现一个点电影播放网站jquery_mobile(简称JQM)其实就是基于jquery开发出来的一套移动端框架,适应移动用户端市场对浏览与体验从而进一步的提升jquery_mobile控件介绍jquery_mobile的语法将各个控件(widget)以data-role的形式定…

怎么查一个作者的所有文章_作为一个老手seo优化人员,应该怎么去给网站发文章更新...

相信做网站优化seo的很多朋友都知道,做一个网站容易,但是怎么维持网站文章内容的更新呢?有的网站布局比较大,所以每天就需要大量的文章来维护网站更好的做优化。另外一方面就是做一个网站的文章是需要文章基础的(当然技术大佬除外…

同一个网站别人能打开我打不开_网站搬家教程(网站更换空间教程)新手网站搬家详细图文教程...

前几天根据阿里云的站点监控提醒,我的卖家内参网(www.mjncw.cn)站点打不开的频率有一点高,于是,今天就想把这个网站,搬家到和我的站长在线(www.olzz.com)同一个服务器上面来。为了让更多人学习怎么进行网站搬家,我今天…

python 爬取图片并保存函数_Python爬取网站图片并保存的实现示例

先看看结果吧,去bilibili上拿到的图片-第一步,导入模块import requestsfrom bs4 import BeautifulSouprequests用来请求html页面,BeautifulSoup用来解析html第二步,获取目标html页面hd {user-agent: chrome/10} # 伪装自己是个(c…

网站缓存应用类

Class jz_web_CacheClass jz_web_Cache Rem 使用说明 Rem 属性:Main 定义读取主缓存的Sql文本,读取主缓存,可读/写属性 Rem 属性:Main_Time 定义主缓存缓存过期时间,只写属性 Rem 属性:Main_LocalRefurbish 定义主缓存是否…

能帮你找到网页设计灵感的16个网站

几天前我发了篇《创意灵感哪里寻》的文章,历数了一些我寻找设计灵感时经常访问的网站。在文章的最后,我给大家扔了个问题:“你会到什么网站找设计灵感呢?”。那下面呢,就是一些看官推荐的网站。有些我没听过&#xff0…

【待完善】兼论谷歌浏览器报错信息和某网站被qiang可能情况

谷歌浏览器怎么无法访问此网站? https://www.kafan.cn/edu/69110541.html (这个不重要可以不看)使用谷歌浏览器浏览网页的时候出现了“无法访问此网站,无法找到www.xxx.com的服务器DNS Address。 出现DNS_PROBE_FINISHED_NXDOMAIN”的提示…