news 2026/6/15 15:23:58

监测应用版本更新

作者头像

张小明

前端开发工程师

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/6/15 9:20:37

NVIDIA驱动兼容性问题终结者:PyTorch-CUDA-v2.7自动适配主流显卡

NVIDIA驱动兼容性问题终结者&#xff1a;PyTorch-CUDA-v2.7自动适配主流显卡 在深度学习项目开发中&#xff0c;最令人头疼的往往不是模型设计本身&#xff0c;而是环境搭建——尤其是当你的代码写完准备训练时&#xff0c;突然弹出一条 CUDA error: no kernel image is availa…

作者头像 李华
网站建设 2026/6/15 9:20:40

3分钟学习大模型(LLM)基础 - 3 | 大模型的幻觉

大模型&#xff08;LLM&#xff09;最让人又爱又恨的特点&#xff0c;莫过于它有时会一本正经地胡说八道&#xff1a;捏造不存在的历史事件、杜撰虚假的法律条文&#xff0c;甚至自己编造代码库。 这种现象在业内被称为“幻觉”&#xff08;Hallucination&#xff09;。要想正…

作者头像 李华
网站建设 2026/6/15 10:23:27

KSCrash实战指南:3步快速解决iOS应用崩溃难题

KSCrash实战指南&#xff1a;3步快速解决iOS应用崩溃难题 【免费下载链接】KSCrash The Ultimate iOS Crash Reporter 项目地址: https://gitcode.com/gh_mirrors/ks/KSCrash 在iOS应用开发过程中&#xff0c;你是否经常遇到应用突然闪退却无法定位问题根源的困扰&#…

作者头像 李华
网站建设 2026/6/15 9:19:52

宋体字体终极配置指南:快速解决Linux系统中文显示问题

宋体字体终极配置指南&#xff1a;快速解决Linux系统中文显示问题 【免费下载链接】宋体字体文件下载 宋体字体文件下载 项目地址: https://gitcode.com/open-source-toolkit/c17ea 还在为Linux系统中中文显示乱码而烦恼吗&#xff1f;宋体字体资源项目为你提供了完整的…

作者头像 李华
网站建设 2026/6/14 11:24:49

Tsuru日志聚合架构深度解析:从设计思想到生产实践

Tsuru日志聚合架构深度解析&#xff1a;从设计思想到生产实践 【免费下载链接】tsuru Open source and extensible Platform as a Service (PaaS). 项目地址: https://gitcode.com/gh_mirrors/ts/tsuru 在云原生应用快速发展的今天&#xff0c;日志管理已成为平台即服务…

作者头像 李华
网站建设 2026/6/15 9:17:28

libbacktrace 终极指南:快速掌握C语言栈回溯技术

libbacktrace 终极指南&#xff1a;快速掌握C语言栈回溯技术 【免费下载链接】libbacktrace A C library that may be linked into a C/C program to produce symbolic backtraces 项目地址: https://gitcode.com/gh_mirrors/li/libbacktrace libbacktrace 是一个功能强…

作者头像 李华