vue项目做seo优化(prerender-spa-plugin vue-meta-info)
今天公司考虑seo设计方案,服务端渲染(ssr)和 预渲染的方式,不过只是打算对几个简单的页面seo,所以选择了使用预渲染的方式,以下是实现过程中遇到的问题,供大家查看,有不对的地方请指正:
使用prerender-spa-plugin,官网文档说是必须使用history模式
1.history模式遇到的问题:
a.刷新页面出现空白
按照vue-router官方文档调整nginx,
location / {
try_files $uri $uri/ /index.html;
}
然后调整router/index.js ,添加 base:'/'
const router = new VueRouter({
mode: 'history',
base:'/',
routes: routes
});
最好修改config/index.js 中的build部分的 assetsPublicPath: '/',
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'), // Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
....
因为我们是把打包发布后的程序放在了根目录下,所以base 和 assetsPublicPath 都写了 / ,如果网站访问形式是 http://www.XXX.com/web ,则需要把 / 该为 /web/ ,否则访问不到内容
b.请求首页数据没有问题,可是请求二级页面时接口获取数据错误,查看原因是请求路径是相对路径的原因,我们用的是axios,只需要把axios的baseurl改为绝对路径即可
2.安装prerender-spa-plugin遇到的问题
a.安装有的时候会出现安装失败的情况,建议用淘宝镜像安装 cnpm i prerender-spa-plugin --save-dev
b.安装后异步数据不出现,解决办法加延时 和 跨域 处理;
webpack.prod.conf.js:
...
const PrerenderSPAPlugin = require('prerender-spa-plugin')
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer ...
plugins: [
// 在vue-cli生成的文件的基础上,只有下面这个才是我们要配置的
new PrerenderSPAPlugin({
// 生成文件的路径,也可以与webpakc打包的一致。
// 下面这句话非常重要!!!
// 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。
staticDir: path.join(__dirname, '../dist'), // 对应自己的路由文件,如果index有参数,则prerender-spa-plugin不适用(官方文档有说明)
routes: ['/','/pages/Detail'], // Server configuration options.
server: {
// Normally a free port is autodetected, but feel free to set this if needed.
port: 80,
proxy:{
'/api': {
target: 'http://www.xxx.com',
changeOrigin: true, //是否跨域
pathRewrite: {
'^/api': 'api' //需要rewrite重写的,
}
}
}
},
// 这个很重要,如果没有配置这段,也不会进行预编译
renderer: new Renderer({
// 触发渲染的时间,用于获取数据后再保存渲染结果
renderAfterTime: 10000,
// 是否打开浏览器,false 是打开。可用于 debug 检查渲染结果
headless: false })
}),
... ]
以下是注意点:
A. 预渲染不适用于 渲染路由过多 和 动态路由 (如/detail/参数),只是适用于几个简单的固定路由的情景(例如 /index /about /contact)
B.如果首页类似于今日头条(m.toutiao.com)类似的,估计也会不适用,因为它可能只会预渲染 第一个分类下的前10条..;而且只是每次打包的时候执行预渲染,如果打包后后台又发布新文章了,则会造成预渲染数据和后台数据不同步的问题;
vue项目做seo优化(prerender-spa-plugin vue-meta-info)的更多相关文章
- vue spn如何做seo优化
vue spn如何做seo优化 突然来了一个需求,对已有的项目做SEO优化,WHAT? 总所周知,spn对seo不够优化,因而官方考虑到直接使用ssr 一个不算解决办法的办法prerender-spa ...
- VUE 2.x SEO 优化问题 vue-meta-info && prerender-spa-plugin 配合使用
VUE 2.x SEO 优化问题,以及预渲染问题 1.新建项目可以采用nuxt.js , 配置meta.以及预渲染 都很方便,官网文档都很详细: 2.对于已有项目: vue-meta-info & ...
- 82.使用vue后怎么针对搜索引擎做SEO优化?
什么是SEO 搜索引擎优化(Search engine optimization,简称SEO),指为了提升网页在搜索引擎自然搜索结果中(非商业性推广结果)的收录数量以及排序位置而做的优化行为,是为了从 ...
- 一个网站完整的SEO优化方案,方法,怎么做seo优化?
SEO优化主要分为站内优化,站外优化.如果非得说一套完整的SEO优化方案,那就是需要4名专业人员:前端人员,内容编辑,网络推广人员,和数据分析人员.那以下就详细介绍这四个岗位各自负责的工作有哪些: 一 ...
- 如何做seo优化才能获取搜索引擎排名?
现在网络上有很多网站,但是排名和流量都不理想,所以很多企业会很苦恼.所以我们经常思考如何使网站被搜索引擎喜欢,被用户喜欢,有一个良好的排名和流量? 在这个鱼龙混杂的网络中,seo优化实际上是seo网站 ...
- Vue项目使用CDN优化首屏加载
前言 作为一个网站应用,加载速度是非常重要的.加载速度,一个是程序的合理安排,如以组件按需加载,一个是js.css等资源的异步加载. 在Vue项目中,引入到工程中的所有js.css文件,编译时都会被打 ...
- 在vue项目中的js文件里使用vue实例
参考的网址:https://blog.csdn.net/weixin_34353714/article/details/86958742 不为其他,就为了记录一下,方便以后查看: 第一种方法: 1.首 ...
- 使用Prerender.io为angular项目做SEO
现在的项目的为了更好的分工明确,降低耦合都开始采用前后端分离的形式进式开发,我们也采用这种开发形式,前端用angular开发.虽说刚开始也遇各种坑,但是后期熟悉了之后简直爽呆.一个比较大的坑就是SEO ...
- 新网站如何做SEO优化【转】
“百度快照变慢了.百度收录问题.关键词掉了”,这是在卢松松留言本被经常问及的问题,新手站长往往会因此吃不下饭.睡不着觉,网站的推广是一个漫长的过程,“心急吃不了热豆腐”,不要整天想着一建站就有巨大的流 ...
随机推荐
- oracle 判断字段内是否含中文
select * from tabell(表名) where asciistr(字段) like '%\%';
- PHP协程入门详解
概念 咱们知道多进程和多线程是实现并发的有效方式.但多进程的上下文切换资源开销太大:多线程开销相比要小很多,也是现在主流的做法,但其的控制权在内核,从而使用户(程序员)失去了对代码的控制,而且线程的上 ...
- CentOS 6 RPM安装包下载地址
32位系统的RPM安装包的下载地址 http://mirrors.163.com/centos/6/os/i386/Packages/ 64位系统的RPM安装包的下载地址 http://mirrors ...
- git:distributed is the new centralized-part1
PART 1 梗概 git文件流转有三个工作区域:工作目录(working directory).暂存区域(staging area).本地仓库(repository).文件处于上述三个工作区域的状态 ...
- html css+div+jquery实现图片轮播
一直想自己动手做一个图片轮播的控件,查查网上的资料大多引用已经做好的组件,其原理算法不是很清楚,于是自己用jquery写了一个.先看下效果图: 主要界面实现思路如下: 1.新建一个div宽度为100% ...
- powerdesigner 使用心得 comment、name
一.表字段设计页面设置 注意:name列填写的是中文,这样方便在视图中显示,本人忘了所以现在写下来. 二.设置PowerDesigner模型视图中数据表显示列 1.Tools-Display Pref ...
- iOS Masonry控件等比例布局
一.先解释相关API 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /** * distribute with fixed spacing * * ...
- 前端导出功能get和post两种方式
get方式: var url = ’/sjdd/eventQuery/exportSuperviseEventExcel.do?beginDate=' + beginDate + '&endD ...
- 不同系统、不同存储格式(textfile, parquet)数据的传递
描述: 本地测试环境hive中有数据,存储格式为textfile,现在要上传到公司开发环境,存储格式为parquet, 如何实现??? tb_textfile表---> local file - ...
- java第二章总结与感想
本章主要介绍Java程序设计环境,下面一节一节的记录: 2.1 安装java工具箱(JDK): 2.1.1, 下载JDK: 这一节主要介绍了以下知识点: (1)jdk的下载地址: (2)一些java术 ...