前言

vue属于单页面应用,对于SEO不太友好,当然vue也给出了相应的解决办法,可以通过vue ssr服务端渲染进行解决,但对于页面较少的企业站来说可以直接使用 prerender-spa-plgin,本文总结prerender-spa-plugin+vue-meta-info做seo优化及遇到的问题。

一、prerender-spa-plugin使用

vue版本2.6.12
webpack4.0

1.安装

//npm
npm install prerender-spa-plugin --save
//yarn
yarn add prerender-spa-plugin --dev

2.vue.config.js配置


const PrerenderSPAPlugin = require('prerender-spa-plugin');
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
const path = require('path');
function resolve(dir) {return path.join(__dirname, dir)
}
module.exports = {//配置绝对路径publicPath: '/',outputDir: 'dist',assetsDir: 'static',configureWebpack: config=> {//在开发环境不进行预渲染操作if(process.env.NODE_ENV === 'production'){const plugins=[new PrerenderSPAPlugin({//根目录staticDir: resolve('dist'),//需要预渲染的路由routes:['/','/about','/contact'],renderer: new Renderer({ignoreJSErrors: true,inject: {foo: 'bar'},//渲染时显示浏览器窗口,建议直接为trueheadless: true,//最大渲染路由数量maxConcurrentRoutes:20,//延迟多长时间进行渲染renderAfterTime: 5000,//main.js中进行对应配置renderAfterDocumentEvent: 'render-event'})})]config.plugins.push(...plugin)}}
}

3.main.js配置

new Vue({el: '#app',store,router,render: h => h(App),//重要部分mounted () {document.dispatchEvent(new Event('render-event'))}
})

4.router.js中一定要设置history模式

export default new Router({mode: 'history', // 路由模式routes: constantRoutes,
})

5.npm run build
打包之后可以看到配置好的路由生成了相应的html页面

二、vue-meta-info使用

1.安装

npm install vue-meta-info --save

2.main.js引用

import MetaInfo from 'vue-meta-info'
// 注册
Vue.use(MetaInfo)

3.页面使用

//单个页面配置
<template><div>首页</div>
</template>
export default {name:'首页'metaInfo:{title:'首页',meta:[{name: 'keyWords',content:'关键字'},{name:'description',content:'描述'}]}
}
//多页面配置
<template><div>首页</div>
</template>
export default {name:'index'metaInfo():{return{meta:this.metaData}},data(){return{metaData:''}},watch:{$route(to,form){//通过跳转页面配置每个页面的关键字和描述,这只是个例子//注意如果通过to.path去判断 需要进行兼容判断 因为渲染后的访问路径会在末尾自动添加/ 例如 loclhost:3000/index/,这个时候就需要 to.path === '/index' || to.path==='/index/'if(to.name === 'index'){this.metaData=[{name: 'keyWords',content:'关键字'},{name:'description',content:'描述'}]}//当然也可以封装一个方法去返回每个页面的文案//this.metaData = metaSetFuc(to.name)}}
}

三、在使用中遇到的问题

1. [prerender-spa-plugin] Unable to prerender all routes! 错误
在node_modules -> @prerender -> renderer-puppeteer -> es6 -> renderer.js(113行)

await page.goto(`${baseURL}${route}`, navigationOptions);
//修改为
await page.goto(`${baseURL}${route}`, {...navigationOptions, timeout: 0});

2.修改完成之后一直处于build状态打包并未成功
检查一下index.html中是否存在引用外部css/js文件,因为在打包过程中未能拉取外部文件内容导致一直处于build状态,例如

<head>//这种形式引用思源黑体字体库<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+SC:100,300,400,500,700,900">
</head>

3.假如项目中用到了swiper,也许会产生一个问题进行预渲染后,swiper-slide渲染了个默认800px的宽度,导致刷新页面轮播图样式显示异常,暂时只能手动修改打包后的文件 如果有解决办法欢迎留言

使用webpack5可以看一下: prerender-spa-plugin-next

Vue预渲染prerender-spa-plugin+vue-meta-info相关推荐

  1. vue预渲染之prerender-spa-plugin解析(二)

    前面我们有介绍了什么是预渲染.使用场景.然后简单的介绍了预渲染的集成过程,感兴趣的童鞋可以去看一下vue预渲染之prerender-spa-plugin解析(一),这一节我们重点来研究一下preren ...

  2. vue_SSR框架:搭好的Vue服务器渲染框架,用vue做网站开发、做seo的首选。

    前端江太公 搭好的Vue服务器渲染框架,用vue做网站开发.做seo的首选 最成熟的Vue ssr框架,一个命令就能启动和部署.零侵入开发,跟开发vue纯客户端一模一样. 体验优秀成熟的ssr框架 使 ...

  3. vue 预渲染 (进行SEO优化)

    优点: 获取服务端渲染的优点 对特定的路由生成HTML文件,作为一个完全静态的站点 无需使用服务器进行配置,方便网络爬虫进行推广网站 官网:vue-cli-plugin-prerender-spa - ...

  4. 记录vue预渲染prerender-spa-plugin踏坑

    1.安装 命令:cnpm install prerender-spa-plugin -D  //避免报错,会自动下载文件等待 2.找到build下的webpack.prod.conf.js 头部添加 ...

  5. vue render 渲染html,详解vue渲染函数render的使用

    1.什么是render函数? vue通过 template 来创建你的 HTML.但是,在特殊情况下,这种写死的模式无法满足需求,必须需要js的编程能力.此时,需要用render来创建HTML. 比如 ...

  6. Vue SPA项目SEO优化之预渲染Prerender-spa-plugin

    目的 由于基于Vue的SPA项目普通的爬虫无法爬取项目的静态文本的内容,通过预渲染插件prerender-spa-plugin解决vue的SPA项目的SEO问题. 可以看到项目编译后的index.ht ...

  7. 预渲染vue.js应用程序(使用node或laravel)

    服务器端渲染现在非常流行.但它也并非没有缺点.预渲染是一种替代方法,在某些情况下甚至可能更好.下面我们来看一下如何预渲染vue.js应用程序. 在本文中,我们将探讨预渲染如何与vue.js一起工作,并 ...

  8. vue的SEO优化——预渲染后路由+点击事件失效问题解决

    vue是单页面框架且前后端分离,不利于seo优化.针对这一点,还是有解决办法的. 预渲染后路由+点击事件失效问题解决--近期发现 最近遇到了一个前台官网,由于时间比较紧,所以我选择了用vue框架去搭建 ...

  9. vue项目使用预渲染 进行seo优化

    vue项目使用预渲染 进行seo优化 vue进行seo优化的两个方法 1.预渲染*** 针对项目其中几个页面的seo,标题不能通过接口数据动态渲染 情况使用 使用以下两个插件进行预渲染seo优化: n ...

最新文章

  1. 一只蝙蝠的自述,在朋友圈火了
  2. android ios 上传图片到服务器,.net 接收ios, android的上传图片
  3. 元气森林难撕“网红”标签
  4. Safari 快捷键
  5. C++设计模式之Facade模式(外观模式)
  6. 360搜索引擎能否给苦逼的站长们带来希望?
  7. IPy模块测试demo,打印C段ip列表
  8. 10分钟体验一把Kafka[测试用例]
  9. 我的世界服务器光影文件夹,我的世界光影怎么开?中国版介绍
  10. 刷题总结——寻宝游戏(bzoj3991 dfs序)
  11. 针对支付宝-当面付实现的个人支付
  12. php使用grpc(windows环境下)
  13. JAVA系列之JVM优化
  14. LOL IXTAL CUP 第一日 冠军杯赛 407的夺冠之路
  15. 数据结构之冒泡排序算法(图解+分析+代码调优)
  16. js正则表达式之 (?=) (?!)
  17. 工业嵌入式计算机系统介绍
  18. Windows 下安装 Xdebug 受难记之(3)
  19. google code提供的免费的SVN服务器
  20. CC65 开发FC/NES 游戏(三)使用摇杆

热门文章

  1. 四川企立方电商:拼多多新店怎么选关键词
  2. C字符串类型的 12345 转换为int类型的 12345
  3. java cmos_CMOS CCD
  4. 深度学习之数据扩充,对应生成扩充的标签文件
  5. 艾德克斯充电测试软件_艾德克斯大功率电子负载充电桩测试解决方案
  6. 光伏储能并网发电模型,根据储能电池SOC的工作区间,光伏有MPPT、恒功率输出两种控制方式,在电池健康工况下光伏处于MPPT模式
  7. Unity3D的脚本-script入门
  8. 计算机网络原理第二章--物理层
  9. cuda安装、gcc多版本兼容安装切换
  10. 安装了不兼容的APR(基于Apache Tomcat原生库)版本[1.1.29]