news 2026/5/30 16:33:41

监测应用版本更新

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
监测应用版本更新

监测应用版本更新

  • 一、版本更新判断核心
  • 二、项目入口文件src/App.vue中引入封装好的检查版本更新组件:
  • 三、组件内容:
    • 1. 引入依赖
    • 2. 定义变量
    • 3. checkRefresh 函数
    • 4. start 函数
    • 5. 生命周期钩子
  • 四、组件完整示例:

文件内容的变化反映版本更新;HTML 结构和内容: 通常,应用程序的主要 HTML 文件(如 index.html)包含了应用的核心结构和引用的资源(如 JavaScript 和 CSS 文件)。当应用程序进行版本更新时,可能会对该文件进行修改,例如更改版本号、更新引用的脚本或样式表,或者其他内容。

一、版本更新判断核心

await axios.get("./index.html?_timestamp=" + new Date().getTime(), { timeout: 5000 }).then((resp) => resp.data.toString()).catch(() => "");

二、项目入口文件src/App.vue中引入封装好的检查版本更新组件:

importUpdateNotifyfrom'@/components/UpdateNotify.vue'...<!--检查版本更新--><UpdateNotify/>

三、组件内容:

1. 引入依赖

import{onMounted,onUnmounted}from"vue";importaxiosfrom"axios";
  • onMounted 和 onUnmounted: 这些是 Vue 3 的生命周期钩子,用于在组件挂载和卸载时执行特定代码。
  • axios:一个用于处理 HTTP 请求的库,在此组件中用于获取 HTML 内容。

2. 定义变量

letlastHtml:string='';constDURATION=6000;lettimer:any;
  • lastHtml: 用于存储上一次获取的 HTML 内容,以便进行比较。
  • DURATION: 定义检查更新的时间间隔(6000 毫秒,即 6 秒)。
  • timer: 用于存储定时器的 ID,以便能够在组件卸载时清除它。

3. checkRefresh 函数

asyncfunctioncheckRefresh(){constnewHtml=awaitaxios.get("./index.html?_timestamp="+newDate().getTime(),{timeout:5000}).then((resp)=>resp.data.toString()).catch(()=>"");letflag=false;if(newHtml&&lastHtml){flag=newHtml!=lastHtml;}else{if(newHtml){lastHtml=newHtml;}}returnflag;}
  • 功能: 此函数发送一个 GET 请求以获取当前的 index.html 文件。为了避免缓存,它在请求 URL 中添加了一个时间戳。

  • 逻辑:

    • 如果成功获取到新的 HTML 内容 (newHtml),则与之前的内容 (lastHtml) 进行比较。
    • 如果内容不同,表示有更新,返回 true;如果没有更新,返回 false。
    • 如果这是第一次获取 newHtml,则将其存储到lastHtml 中。

4. start 函数

functionstart(){timer=setInterval(async()=>{constwillUpdate=awaitcheckRefresh();if(willUpdate){openNotification();clearInterval(timer);}},DURATION);}
  • 功能: 启动一个定时器,每隔 DURATION 毫秒调用 checkRefresh 函数。
  • 逻辑:
    • 如果检测到新版本(willUpdate 为 true),则调用 openNotification() 来显示更新通知,并清除定时器。

5. 生命周期钩子

onMounted(()=>{if(process.env.NODE_ENV!=='development'){start();}});onUnmounted(()=>{if(timer){clearInterval(timer);}});
  • onMounted: 当组件挂载后,检查当前环境。如果不是开发环境,则调用 start() 开始检查更新。
  • onUnmounted: 在组件卸载时,如果定时器存在,则清除它,以避免内存泄漏。

四、组件完整示例:

<script setup lang="ts">import{onMounted,onUnmounted}from"vue";importaxiosfrom"axios";letlastHtml:string='';constDURATION=6000;lettimer:any;asyncfunctioncheckRefresh(){constnewHtml=awaitaxios.get("./index.html?_timestamp="+newDate().getTime(),{timeout:5000}).then((resp)=>resp.data.toString()).catch(()=>"");letflag=falseif(newHtml&&lastHtml){flag=newHtml!=lastHtml;}else{if(newHtml){lastHtml=newHtml;}}returnflag}functionstart(){timer=setInterval(async()=>{constwillUpdate=awaitcheckRefresh();if(willUpdate){openNotification()clearInterval(timer)}},DURATION)}constopenNotification=()=>{ElMessageBox.confirm('您現在使用的是舊版本,請點擊按鈕刷新瀏覽器使用','版本更新',{confirmButtonText:'刷新',showCancelButton:false,type:'warning',closeOnClickModal:false,closeOnPressEscape:false,}).then(()=>{window.location.reload();// 强制刷新页面}).catch(()=>{});};onMounted(()=>{// 生产环境检查版本更新if(process.env.NODE_ENV!=='development'){start()}})onUnmounted(()=>{if(timer){clearInterval(timer);}})</script><template><div></div></template><style scoped lang="less"></style>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 11:54:26

Emby Server性能监控完全指南:快速掌握服务器状态监控技巧

Emby Server性能监控完全指南&#xff1a;快速掌握服务器状态监控技巧 【免费下载链接】Emby Emby Server is a personal media server with apps on just about every device. 项目地址: https://gitcode.com/gh_mirrors/emby3/Emby 想要确保你的Emby媒体服务器始终稳定…

作者头像 李华
网站建设 2026/5/29 17:26:50

AI开发者福音:预装CUDA的PyTorch-v2.7镜像免费获取方式

AI开发者福音&#xff1a;预装CUDA的PyTorch-v2.7镜像免费获取方式 在深度学习项目开发中&#xff0c;你是否曾经历过这样的场景&#xff1a;花费整整一天时间配置环境&#xff0c;却因为一个 libcudart.so 版本不匹配导致 PyTorch 无法加载 GPU&#xff1f;又或者&#xff0c;…

作者头像 李华
网站建设 2026/5/26 16:28:55

winstall:轻松批量安装Windows应用的Web工具

winstall&#xff1a;轻松批量安装Windows应用的Web工具 【免费下载链接】winstall A web app for browsing and installing Windows Package Manager apps. 项目地址: https://gitcode.com/gh_mirrors/wi/winstall 在Windows系统上安装软件时&#xff0c;你是否曾经为…

作者头像 李华
网站建设 2026/5/23 11:54:54

大规模Token生成任务:利用PyTorch-CUDA-v2.7提高并发能力

大规模Token生成任务&#xff1a;利用PyTorch-CUDA-v2.7提高并发能力 在大语言模型&#xff08;LLM&#xff09;日益渗透到文本生成、智能客服和内容创作等场景的今天&#xff0c;如何高效处理成千上万条并行请求&#xff0c;成为衡量AI系统性能的关键指标。尤其是面对“批量生…

作者头像 李华
网站建设 2026/5/28 23:09:44

CRUD Admin Generator:终极快速构建后台管理系统的完整指南

CRUD Admin Generator&#xff1a;终极快速构建后台管理系统的完整指南 【免费下载链接】crud-admin-generator An open source tool to generate a complete backend from a MySql database. 项目地址: https://gitcode.com/gh_mirrors/cr/crud-admin-generator CRUD A…

作者头像 李华
网站建设 2026/5/29 19:19:53

FoxMagiskModuleManager:让你的Android设备更智能的模块管家

FoxMagiskModuleManager&#xff1a;让你的Android设备更智能的模块管家 【免费下载链接】FoxMagiskModuleManager A module manager for Magisk because the official app dropped support for it 项目地址: https://gitcode.com/gh_mirrors/fo/FoxMagiskModuleManager …

作者头像 李华