【Vue】预渲染之prerender-spa-plugin解析,方便搜索引擎的抓取

news2024/11/15 16:03:09

prerender-spa-plugin解析

      • 项目背景:对于那些需要推广,希望能在百度搜索时排名靠前的网站而言,使用单页面应用的无法被抓取
      • 背景,VUE项目想SEO优化,但vue是单页面应用,不利于搜索引擎的抓取
      • 实现过程,采用预渲染
      • 主要使用 prerender-spa-plugin 插件,其与SSR一样都可以加快页面的加载速度,
          • 优缺点
      • SPA单页面应用简介
      • 步骤一,导入预渲染插件
      • 步骤二,vue.config.js中增加配置
      • 步骤三,npm run build
          • 结果必定有报错!但不慌,改!
          • 解决方法:使用已经被修改的库
          • 替换一下旧包的引入,替换完已可以正常打包,但还有个小警告,解决他!
          • 错误2 小警告
          • 解决方法
          • 错误三,如果你发现你的代码在打包过程中,一直循环中,
          • 解决方法,在main.js中添加代码

项目背景:对于那些需要推广,希望能在百度搜索时排名靠前的网站而言,使用单页面应用的无法被抓取

背景,VUE项目想SEO优化,但vue是单页面应用,不利于搜索引擎的抓取

实现过程,采用预渲染

主要使用 prerender-spa-plugin 插件,其与SSR一样都可以加快页面的加载速度,

优缺点
  • 简单易上手
  • 对原有项目改动小
  • 不太适合变动较频繁的页面

SPA单页面应用简介

  • 使用MVVM经典模式,后端数据和页面结构分离
  • 架构清晰,前端交互逻辑,后端负责数据处理;用户体验好,加载页面速度快
  • 页面内容的改变不需要加载整个页面,避免了非必要的页面条状和重新渲染,也就是局部刷新
    在这里插入图片描述

步骤一,导入预渲染插件

npm i prerender-spa-plugin -D

步骤二,vue.config.js中增加配置

const { defineConfig } = require('@vue/cli-service')
const PrerenderSPAPlugin = require('prerender-spa-plugin')
const path = require('path')
module.exports = defineConfig({
  transpileDependencies: true,
  productionSourceMap: true,
  configureWebpack: (config) => {
    if (process.env.NODE_ENV === 'production') {
      config.plugins.push(
        new PrerenderSPAPlugin({
          staticDir: path.join(__dirname, 'dist'),
          routes: ['/'],
        })
      )
    }
  },
})

步骤三,npm run build

结果必定有报错!但不慌,改!
  • 原因是:这个包有问题
    在这里插入图片描述
解决方法:使用已经被修改的库
npm i @dreysolano/prerender-spa-plugin
替换一下旧包的引入,替换完已可以正常打包,但还有个小警告,解决他!
const PrerenderSPAPlugin = require('@dreysolano/prerender-spa-plugin')
错误2 小警告

在这里插入图片描述

解决方法
  • 在babel.config.js中
module.exports = {
  compact: false,
  presets: [
    '@vue/cli-plugin-babel/preset'
  ]
}
错误三,如果你发现你的代码在打包过程中,一直循环中,
解决方法,在main.js中添加代码
new Vue({
  router,
  store,
  render: h => h(App),  // 预渲染
  mounted() {
    document.dispatchEvent(new Event('render-event'))
  }
}).$mount('#app')

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pwn入门(0.0)

单字节:byte 双字节:词或字word 四字节:双词Dword,doubleword 八字节:四词Qword,quadword 16字节:double quadword RBX:存储地址 RCX:计数器循环 RDX:整除取余 R…

onnx模型转TensorRT模型时出错

把onnx模型转TensorRT模型出错 错误一:WARNING: onnx2trt_utils.cpp:366: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32. 解决方法 1、安装onnx-simplifier pip…

ts 装饰器

使用装饰器前,需要把 tsconfig.json 中 experimentalDecorators 设置为 true学习了小满的B站课程:https://www.bilibili.com/video/BV1wR4y1377K?p24 前言 ts中有几种装饰器类型: 类装饰器 ClassDecorator方法装饰器 MethodDecorator参数装…

NFTScan | 05.29~06.04 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.05.29 ~ 2023.06.04 NFT Hot News:NFT 热点资讯 01/ 数据:NFT 巨鲸 Pranksy 以 52.17 枚 ETH 抛售 25 枚 Doodles 5 月 29 日,据 NFT Whale Aler…

Java + lua

luaj 主要特征 luaj 用法示例 luaj 实现原理 查找并调用指定的 Java 方法 从 Java 方法获取返回值 将 Lua function 作为参数传递给 Java 方法 在某些业务场景下,我们可能会遇到 lua 中要调用 java 代码情况,当然这个用 JNI 肯定是可以做到的&…

三十六、数学知识——组合数(递推法 + 预处理法 + 卢卡斯定理 + 分解质因数求解组合数 + 卡特兰数)

组合数算法主要内容 一、基本思路1、组合数基本概念2、递推法——询问次数多 a b 值较小 模处理(%mod)3、预处理阶乘方法——询问次数较多 a b 值很大 模处理(%mod)4、卢卡斯定理——询问次数较少 (a b 值很大&am…

泰克AFG31051信号发生器产品参数

AFG31000系列任意波函数发生器 概述 验证连接 DUT 后输出波形 InstaView? 技术用在任意波函数发生器上可直接查看连接 DUT 后的实时波形,无需使用示波器或其他设备,节省测试时间并避免因阻抗不匹配导致的实验错误。 高保真度信号与高级模式 在连续模式…

软考高级架构师笔记-6计算机系统性能评价信息系统基础知识

目录 1. 前言 & 考情分析2. 系统配置与性能评价1. 性能指标2. 性能指标3. 阿姆达尔解决方案3.信息系统基础知识1.信息系统的分类2.信息系统的生命周期3.信息系统战略规划3.常见系统介绍1.客户关系管理CRM2.供应链管理SCM3.企业应用集成EAI4.结语1. 前言 & 考情分析 前…

VR全景创业是否真的赚钱?项目真的靠谱吗?

说到创业,也许你心里会觉得这类项目对于技术和资金等要求都是比较高的,先别急着反驳,这是大多数人的心理。我们选择某个创业项目时,都需要从创业成本和盈利利润来做预算,现在告诉你有一个VR全景创业项目,几…

爆火的AIGC到底是一片新蓝海,还是又一次的泡沫?

自ChatGPT发布以来,陷入了AIGC热,无论是大众的讨论、资本的流向还是大厂的加入,AIGC似乎都会是未来几年内最火的新蓝海。 不同于以往的“顶尖科技”泡沫,AIGC是真正可以应用到生活中的,这也是为何它会引发大量“失业论…

操作系统 复习--实训题

一. 简答题(共8题,100分) 1. (简答题) 编程使用fork()函数创建子进程,要求父进程中打印当前进程的 PID 和子进程的 PID,而在子进程中只打印当前进程的 PID。 参考代码: int main() { pid_t child_pid;c…

使用openlayers加载geoserver发布的arcgis瓦片

openlayers版本:6.5 geoserver版本:2.18.0 1. geoserver发布arcgis瓦片 首先去maven上面找最新的gwc-arcgiscache https://mvnrepository.com/artifact/org.geowebcache/gwc-arcgiscache/1.19.1 把这个jar包下载下来放到目录geoserver/WEB-INF/lib下面…

可扩展性与生态应用:Ardor公链AMA回顾

近日,Jelurida团队工程师Francisco Sarrias做客CryptoWallet.com,分享了一些有关Ardor的话题: Ardor是什么? Ardor是一个旨在提高区块链可扩展性的开源平台,这意味着该项目有助于使区块链网络运行更顺畅,用…

10分钟通过云服务器搭建自己的chatGPT镜像服务

通过云服务器搭建自己的chatGPT镜像服务 前提:需要有自己的API KEY 1 购买云服务器 本教程以阿里云的云服务器为例。 阿里云地址:https://www.aliyun.com/?spm5176.28008736.J_3207526240.1.769d3e4dTtNjuI 进入阿里云官网,选择云服务器ECS进…

精选博客系列|VMware如何实现多云基础设施

私有云,公有云,多云,边缘云… 如今,组织的团队、数据和工作负载分布在各种环境中。毫无疑问,这导致了技术上的复杂性增加、安全风险加剧、成本飙升和云战略不连贯的问题。 “39% 的高管难以在(他们的&…

18.4:打印一个字符串的全部排列

打印一个字符串的全部排列 方法一&#xff1a;暴力方法。 //方法一&#xff1a;暴力方法。public static List<String> permutation1(String s) {//str是一个存储字符类型的有序表。ArrayList<Character> str new ArrayList<>();//将字符串中的类型存储在s…

Zookeeper概述

​ ZooKeeper概述 ZooKeeper是什么 zookeeper是一个为分布式应用程序提供的一个分布式开源协调服务框架。是Google的Chubby的一个开源实现&#xff0c;是Hadoop和Hbase的重要组件。主要用于解决分布式集群中应用系统的一致性问题。提供了基于类似Unix系统的目录节点树方式的数…

docker 安装 nsq

一. nsq介绍 nsq介绍 NSQ是一个基于Go语言&#xff0c;由bitly公司开源出来的一款简单易用的消息中间件。 官方和第三方开发了众多客户端功能库&#xff0c;如基于HTTP的nsqd、Go客户端go-nsq、Python客户端pynsq、基于Node.js的JavaScript客户端nsqjs、异步C客户端libnsq、J…

JavaSE-02【类型转换和运算符】

第一章&#xff1a;数据类型转换 Java程序中要求参与计算的数据&#xff0c;必须要保证数据类型的一致&#xff0c; 如果数据类型不一致则发生类型的转换1.1 自动转换 自动转换&#xff1a;将取值范围小的类型自动提升为取回范围大的类型 自动类型转换原理&#xff1a;一个i…

MySql锁知识记录积累(一)

1.关于脏读、幻读和不可重复读 脏读&#xff1a;一个事务A读取到了另一个事务B未提交的数据&#xff0c;叫做脏读 不可重复读&#xff1a;事务A被事务B干扰到了&#xff01;在事务A范围内&#xff0c;两个相同的查询&#xff0c;读取同一条记录&#xff0c;却反返回了不同的结…