Vue项目重新部署后,提示用户刷新网页

2023-10-13 07:44

本文主要是介绍Vue项目重新部署后,提示用户刷新网页,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

vue项目部署后,如果用户没刷新页面,浏览器其实加载的还是旧的js文件,如何解决呢?

网上很多方案:
1:websocket监听,需要后台配置
2: 前端header传一个参数,和后台去匹配,类似登录超时功能,需要后台配置
3,前端生成json文件,存储版本号,通过接口调用这个json文件,不需要后台配合

我选择的是第三种。我是用的vite,和webpack差不多

直接上代码:

第一步:
新建一个update-version.js文件

const fs = require('fs');
const path = require('path');const versionNumber = new Date().getTime();const fileContents = {version: versionNumber.toString()
};
//build时,会自动在dist目录生成一个json文件
fs.writeFileSync(path.join(__dirname, 'dist', 'version.json'), JSON.stringify(fileContents));

第二步:
在package.json文件修改build命令
“scripts”: {
“dev”: “vite”,
“build”: “vite build && node update-version.js”
},

第三步:
在request.js文件,增加如下代码:

import axios from 'axios'
import md5 from 'md5'const service = axios.create({timeout: 10000
});
//刷新页面----------start--------------------
let isUpdatePromptShown = false; //多个请求时,只提示一次
service.interceptors.request.use(async request => {const response = await axios.get('/version.json');const acrmVersion = response.data.version;const currentVersion = localStorage.getItem('acrm-app-version')if(currentVersion === null){localStorage.setItem('acrm-app-version',acrmVersion)}else if(currentVersion !== acrmVersion && !isUpdatePromptShown){localStorage.setItem('acrm-app-version',acrmVersion)ElMessageBox.confirm('亲爱的用户,我们的系统有了新的更新,为了您能更好地使用,烦请您刷新一下页面哦!','系统提示',{confirmButtonText: '确定',type: 'warning',showClose: false,   //不显示关闭小图标showCancelButton: false,  // 不显示取消按钮closeOnClickModal: false, // 点击对话框周围不关闭对话框}).then(() => {location.reload()})isUpdatePromptShown = true;throw new axios.Cancel('需要刷新,阻止继续执行操作');}//刷新页面----------end--------------------request.headers["x-requested-with"] = "XMLHttpRequest";return request;
}, error => {return Promise.reject(error);
})

第四步:
本地想测试这个功能,直接在public新建一个version.json文件就行

这篇关于Vue项目重新部署后,提示用户刷新网页的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/201739

相关文章

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再