在具体项目场景中,前端发版后,用户不手动刷新,则感知不到更新;经常会出现:前端更新了某个功能,导致旧功能使用出现问题,而被用户提单;

关于这个问题有多种解决方式:

  • WebSocket ,需要后端配合
  • 接口交互,需要后端配合
  • nginx 配置
  • 前端轮询是否更新(纯前端解决)

因为后端忙,所以暂时写了个纯前端的解决方案

import { ElMessage, ElMessageBox } from 'element-plus';let lastSrcs = [] as any;const scriptReg = /\<script.*src=["'](?<src>[^"']+)/gm;
async function getscript() {const html = await fetch('/?temp=' + Date.now()).then(res => {return res.text();})scriptReg.lastIndex = 0;let result = []let match;//@ts-ignorewhile((match = scriptReg.exec(html))) {//@ts-ignoreresult.push(match.groups.src)}return result
}async function needUpdate() {const newScripts = await getscript()if(!lastSrcs.length) {lastSrcs = newScriptsreturn false}let result = false;if(lastSrcs.length !== newScripts.length) {result = true}for(let i=0; i<lastSrcs.length;i++) {if(lastSrcs[i] !== newScripts[i]) {result = true;break}}lastSrcs = newScripts;return result
}const DURATION = 5000
function autoRefresh() {setTimeout(async()=> {const willUpdate = await needUpdate();if(willUpdate) {ElMessageBox.confirm('检测到系统有更新,是否立即更新?','系统提示',{confirmButtonText: '更新',cancelButtonText: '稍后再说',type: 'warning',}).then(() => {window.location.reload()}).catch(() => {ElMessage.info('已取消,请稍后自己手动刷新页面',)})}autoRefresh()},DURATION)
}autoRefresh()

再到 main.ts中引入这个文件即可

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

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

相关文章

Python知识详解【1】~{正则表达式}

正则表达式是一种用于匹配字符串模式的文本工具&#xff0c;它由一系列普通字符和特殊字符组成&#xff0c;可以非常灵活地描述和处理字符串。以下是正则表达式的一些基本组成部分及其功能&#xff1a; 普通字符&#xff1a;大多数字母和数字在正则表达式中表示它们自己。例如…

指针,指针变量,引用,取地址符,malloce()函数使用,C中“—>” 和“ . ” 作用与区别

目录 一&#xff1a;指针,指针变量&#xff0c;引用&#xff0c;取地址符&#xff1a; 前提 &#xff1a; 1.“ * ” 的两种用途 2." & “的两种用途 2.1&#xff1a;引用 2.2&#xff1a;取地址 补充&#xff1a; 二 : malloc(),动态申请地址空间 1.原型定义…

Dubbo生态之初识dubbo协议

1.RPC框架 在java的发展中&#xff0c;随着业务的越来越庞大&#xff0c;单体架构的工作繁琐且耦合度高&#xff0c;因此单体架构过渡到了分布式架构&#xff0c;而分布式架构就必然涉及到各个服务之间的远程通信(RPC框架)&#xff0c;RPC框架如图所示: 工作流程: a.客户端调…

查看当前Shell系统环境变量

查看当前Shell系统环境变量 查看命令 env效果 查看Shell变量(系统环境变量自定义变量函数) 命令 set效果 常用系统环境变量 变量名称含义PATH与windows环境变量PATH功能一样&#xff0c;设置命令的搜索路径&#xff0c;以冒号为分割HOME当前用户主目录&#xff1a;/rootSH…

有道:一季度业绩超市场预期,生成式AI商业化落地进程加快

5月23日&#xff0c;教育科技公司网易有道&#xff08;NYSE&#xff1a;DAO&#xff09;公布了2024年第一季度未经审计的财务报告。报告期内&#xff0c;受益于“AI”加“教育”双轮驱动&#xff0c;业绩表现超市场预期&#xff0c;业务健康度大幅改善。 财报显示&#xff0c;…

5.23小结

1.java项目创新 目前想添加一个自动回复的功能和设置验证方式有&#xff08;允许任何人添加&#xff0c;禁止添加&#xff0c;设置回答问题添加&#xff0c;普通验证添加&#xff09; 目前只完成画好前端界面&#xff0c;前端发送请求&#xff0c;还有表的修改 因为涉及表字…

leetcode 210.课程表II

思路&#xff1a;拓补排序 其实就是对于第一个题的问题变了一个问法&#xff0c;上一个题本质上是求有没有环&#xff0c;这道题本质上就是让你求出来符合没有环的路径输出而已&#xff0c;本质上没有什么区别。 不同就在于这里需要你额外开一个数组用来存储你遍历这个有向图…

大语言模型量化方法对比:GPTQ、GGUF、AWQ 包括显存和速度

GPTQ: Post-Training Quantization for GPT Models GPTQ是一种4位量化的训练后量化(PTQ)方法&#xff0c;主要关注GPU推理和性能。 该方法背后的思想是&#xff0c;尝试通过最小化该权重的均方误差将所有权重压缩到4位。在推理过程中&#xff0c;它将动态地将其权重去量化为f…

nn.Linear

文章目录 一、nn.Linear 一、nn.Linear nn.Linear 是 PyTorch 中的一个类&#xff0c;用于定义线性变换&#xff08;全连接层&#xff09;。它是神经网络中常用的一种层类型&#xff0c;作为输入张量与权重矩阵之间的线性变换。 nn.Linear(in_features, out_features, biasTru…

决策树最优属性选择

本文以西瓜数据集为例演示决策树使用信息增益选择最优划分属性的过程 西瓜数据集下载&#xff1a;传送门 首先计算根节点的信息熵&#xff1a; 数据集分为好瓜、坏瓜&#xff0c;所以|y|2根结点包含17个训练样例&#xff0c;其中好瓜共计8个样例&#xff0c;所占比例为8/17坏…

2024-5-4-从0到1手写配置中心Config之基于h2的config-server

添加依赖 新建的web工程中添加h2的依赖 添加h2的配置 设置数据源和密码设置初始化sql语句打开h2的控制台 初始化语句创建一个config表&#xff0c;保存服务配置信息。 完成CRUD接口 controller类 mapper接口 测试 在web控制台可以看到sql已经初始化完成&#xff0c;crud接口…

前端基础入门三大核心之HTML篇:深入解析PNG8、PNG16、PNG24与PNG32的差异及网页应用指南

前端基础入门三大核心之HTML篇&#xff1a;深入解析PNG8、PNG16、PNG24与PNG32的差异及网页应用指南 基础概念与作用说明PNG8PNG16PNG24PNG32 代码示例与使用场景PNG8示例PNG24示例PNG32示例 性能优化与最佳实践防范漏洞提示结语与讨论 在网页设计与前端开发中&#xff0c;选择…

PLC工程师按这个等级划分是否靠谱?

在工业自动化领域&#xff0c;PLC工程师扮演着至关重要的角色&#xff0c;他们负责构建、维护自动化系统&#xff0c;推动工业4.0进程的发展。成为一名优秀的PLC工程师需要经历不同境界的发展阶段&#xff0c;每个阶段都对应着不同的技能要求和责任。以下是PLC工程师的六种级别…

Kotlin协程在android中的使用总结

认识协程 引用官方的一段话 协程通过将复杂性放入库来简化异步编程。程序的逻辑可以在协程中顺序地表达&#xff0c;而底层库会为我们解决其异步性。该库可以将用户代码的相关部分包装为回调、订阅相关事件、在不同线程&#xff08;甚至不同机器&#xff01;&#xff09;上调度…

JDK、JRE、编译指令和垃圾回收机制详解

JDK 全称 Java SE Development Kit (Java 开发工具包) JVM虚拟机&#xff1a;Java运行的地方 核心类库&#xff1a;Java提前编好的东西 开发工具&#xff1a; javac,java,jdb,jhat javac:Java编译器&#xff0c;用于将Java源代码编译成Java字节码文件(.class)。 java: java…

[STM32-HAL库]AS608-指纹识别模块-STM32CUBEMX开发-HAL库开发系列-主控STM32F103C8T6

目录 一、前言 二、详细步骤 1.光学指纹模块 2.配置STM32CUBEMX 3.程序设计 3.1 输出重定向 3.2 导入AS608库 3.3 更改端口宏定义 3.4 添加中断处理部分 3.5 初始化AS608 3.6 函数总览 3.7 录入指纹 3.8 验证指纹 3.9 删除指纹 3.10 清空指纹库 三、总结及资源 一、前言 …

[力扣题解] 797. 所有可能的路径

题目&#xff1a;797. 所有可能的路径 思路 深度搜索 代码 // 图论哦!class Solution { private:vector<vector<int>> result;vector<int> path;// x : 当前节点void function(vector<vector<int>>& graph, int x){int i;// cout <&l…

解决鼠标滚动时element-ui日期选择器错位的问题

解决方案&#xff1a;监听鼠标滚动事件&#xff0c;在鼠标滚动时隐藏element-ui日期选择器下拉框 1、先在util文件夹下创建个hidePicker.js文件&#xff0c;代码如下&#xff1a; let el nullconst fakeClickOutSide () > {const SELECTWRAP_BODY document.body // bod…

Day37 贪心算法part04

LC860柠檬水找零(未掌握) 未掌握分析&#xff1a;20的时候找零卡住&#xff0c;同时贪心思路就想了很久 当bill[i]20的时候&#xff0c;我们有两种找零范式&#xff0c;找零10、5和找零三个5&#xff0c;优先找零10、5&#xff0c;因为三个5是可以替代10、5的情况的&#xff0…

Nebula街机模拟器 Mac移植版(400+游戏roms)汉化版

nebula星云模拟器是电脑上最热门的街机游戏模拟器之一&#xff0c;玩家可以通过这个小巧的模拟器软件进行多款经典街机游戏启动和畅玩&#xff0c;本次移植的包含400多款游戏roms&#xff0c;经典的三国志、三国战纪、拳皇、街霸、合金弹头、1941都包含在内。 下载地址&#xf…