超详细!!vue、vue-cli脚手架项目使用prerender-spa-plugin,解决SEO并为其添加title,keyWords,descript
vue、vue-cli脚手架项目使用prerender-spa-plugin,解决SEO并为其添加title,keyWords,descript
注意
注意
注意:本文章所有例举内容,页面均为纯静态页面,没有任何ajax请求,例子适用官方网站等不需要动态渲染的网站,至于能不能依葫芦画瓢应用在带ajax的页面上,这里没做验证
例子采用的各种环境版本:
node版本为:v14.15.0(node -v)
npm版本为:6.14.8(npm -v)
@vue/cli 4.5.6(vue -V)
举个例子,这里我创建一个标准的vue cli项目
1 . 安装 prerender-spa-plugin
详细官方文档也可以参考:链接1npm、链接2gitHub
npm install --save prerender-spa-plugin
(网上很多说,如果不是科学上网,会出现报错的问题,但我这里是没有报错的)
报错的话是prerender-spa-plugin中有puppeteer可能会报错
ERROR: Failed to download Chromium r515411! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
cnpm install --save prerender-spa-plugin puppeteer
2 . 配置
(配置非常重要,配置不好的话就会打包报错,或者打包完之后页面无法跳转等)
步骤1
首先找到 build
目录下的 webpack.prod.conf.js
文件
把这两句话粘进去
const PrerenderSPAPlugin = require('prerender-spa-plugin');
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
然后再看这个文件里的代码,找到 plugins
数组
把下面这段代码,找个喜欢的地方,塞到 plugins
数组里
new PrerenderSPAPlugin({// 生成文件的路径,也可以与webpakc打包的一致。// 下面这句话非常重要!!!// 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。staticDir: path.join(__dirname, "../dist"),// 对应自己的路由文件,比如a有参数,就需要写成 /a/param1。routes: ["/htmlPageWrap1","/htmlPageWrap2","/htmlPageWrap3",],// 这个很重要,如果没有配置这段,也不会进行预编译renderAfterElementExists: true,captureAfterTime: 50000,renderer: new Renderer({inject: {foo: "bar"},// 这个要选false,这样你在打包的时候,会看到一个浏览器调试器会闪出大约1-2秒的时间// 如果你发现这个浏览器调试器,出现之后,一直不消失,打包进度也一直不动,也不报错,那恭喜你,你有什么地方出错了// 这个地方非常坑,出错了不会提示你,提示你的东西不是栈溢出,就是什么少 > 符号,根本不是你出错的地方// 这时你可能要重新好好检查一下你什么地方出错了headless: false,// 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。renderAfterDocumentEvent: "render-event"})})
步骤2
接下来在main.js
中配置这段代码,粘进去放在最下面就行了
mounted() {document.dispatchEvent(new Event("render-event"));}
步骤3
把router
下的index.js
变更为mode: "history"
,变更之后正常启动的本地服务可能无法正常跳转,但是打包之后的是可以的
2 . 配置SEO
详细官方文档也可以参考:链接npm
npm install vue-meta-info --save
import MetaInfo from 'vue-meta-info'
Vue.use(MetaInfo)
接下来在你想要配置seo的主页面进行配置就行了,MetaInfo的更多配置项,自己去文档看看
接下来直接 build 打包就行了
打包完成之后去dist
目录下用git
起一个http
服务试验一下
超详细!!vue、vue-cli脚手架项目使用prerender-spa-plugin,解决SEO并为其添加title,keyWords,descript相关推荐
- vue搭建cli脚手架环境(出现问题及解决,主要是node版本低)
vue搭建cli脚手架环境(出现问题及解决,主要是node版本低) 参考文章: (1)vue搭建cli脚手架环境(出现问题及解决,主要是node版本低) (2)https://www.cnblogs. ...
- vue create xxx创建项目过程中报错的解决方法
vue create xxx创建项目过程中报错的解决方法 报错图例 解决办法 报错图例 解决办法 首先检查电脑里是否安装node.js 检查方法:命令行输入 node -v 还要再输入一个 npm - ...
- 超详细的VsCode创建SpringBoot项目(图文并茂)
文章目录 超详细的VsCode创建SpringBoot项目(图文并茂) 一.安装jdk 1.OpenJDK 2.Java SE Development Kit 8 二.安装maven 1.下载 2.配 ...
- 超详细版本vue+capacitor(自定义capacitor插件)编写移动端应用
人生苦短,我们要: 我的环境 Node v16.13.0 npm v8.1.0 mac的话需要安装Xcode windows的话需要Java 8 JDK和Android Studio软件 本文以安卓开 ...
- vue 3.0 脚手架项目搭建(含javascpt和typescript两种)
目录 前言 一.重新安装vue/cli 二.创建项目 1.创建空白项目 2.选择vue版本 3.启动项目 三.总结 前言 提示:vue已经进入了3.0的时代,具体的优点大家可以自行百度搜索,相关UI框 ...
- 超详细的Vue渲染原理讲解
目录 一.Vue简介 1. MVVM.MVP和MVC 2. Vue的基本配置 二.Vue渲染原理 1. HTML与模板 2. Vue组件的完整渲染过程 (1). Vue自身的初始化阶段 (2). 组件 ...
- [超详细]Echarts+vue+百度地图 动态实现城市疫情地图
动态中国城市疫情地图的实现,主要是参照Echarts官网官方案例的方法:Examples - Apache ECharts ,但是官方给的案例数据都是静态写在Option的Data中的无法根据疫情实时 ...
- vue cli脚手架项目利用webpack给生产环境和发布环境配置不同的接口地址或者不同的变量值。...
废话不多说,直接进入正题,此文以配置不同的接口域名地址为例子 项目根目录下有一个config文件夹,基础项目的话里面至少包括三个文件, 1.dev.env.js 2.index.js 3.prod.e ...
- 一篇超详细的vue项目前端自动化测试教学!
为什么需要写前端自动化 大部分企业为了追求开发效率,所以并没有去强制要求员工写前端自动化测试的代码.另一部分企业则会要求前端开发额外写前端自动化测试.那么写和不写到底有哪些区别呢? 不写前端自动化测试 ...
最新文章
- PTA浙大版python程序设计题目集--第1章-3 输出“Python语言简单易学” (10 分)
- NGINX-RTMP复杂度分析
- VS2008调试总结
- STM32F407控制AD7606 采用HAL库的TIM和SPI
- android 底部导航,Android 底部导航之BottomNavigationBar
- cmd命令不识别exp_cmd 命令行exp 命令导出数据库文件
- “The Stupidity Paradox”作者访谈
- vs2008试用版的评估期已经结束解决办法
- web安全day11:进一步学习windows域的gpo
- 上传文件时服务器返回错误信息,上传文件时的错误提示
- 基于springboot小区物业管理系统
- 伪静态 全站php 跳到html,IIS下万能301跳转方法:URL伪静态重写+PHP301
- 测试老鸟常用的自动化测试工具有哪些?
- Android 内存剖析 之 MAT讲解
- 2022年10月29日(星期六)骑行海囗林场森林公园
- 解决WiFi共享大师频繁掉线问题
- 川土微数字隔离器CA-IS36XX高性能数字隔离器 可替代TI ADI MAX等
- 通信协议-GMSL(千兆多媒体串行链路)
- wince挂起和唤醒(suspend/wakeup)
- lqc_构建基于域名的虚拟主机
热门文章
- phpmywind 数据记录查询
- 谷歌浏览器查看版本信息及个人资料路径的命令方法
- Javascript技巧(230个)[转载]
- python 批量读取csv_Python Pandas批量读取csv文件到dataframe的方法
- 最强GTD时间管理工具:OmniFocus Pro 3 for Mac支持big sur
- 全球免费公共 DNS 解析服务器 IP 地址列表推荐 (解决无法上网/加速/防劫持)
- 企业网站防CC攻击软件防火墙和WEB防火墙大比较
- Computer vision: models, learning and inference 学习笔记1:引言
- Mac 命令行关闭和打开蓝牙
- 计算机生物学美国直博,Nature:所有博士中,生物学博士收入垫底!