news 2026/4/16 10:41:47

监测应用版本更新

作者头像

张小明

前端开发工程师

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/4/16 9:00:51

PyTorch与TensorFlow共存可能吗?看v2.7镜像的多框架支持

PyTorch与TensorFlow共存可能吗&#xff1f;看v2.7镜像的多框架支持 在深度学习工程师的日常工作中&#xff0c;你是否曾遇到这样的场景&#xff1a;刚跑通一个PyTorch写的模型&#xff0c;转头就要复现一篇TensorFlow实现的论文&#xff1b;团队里有人坚持用torch.nn&#xff…

作者头像 李华
网站建设 2026/4/13 23:47:55

Kong AI网关终极指南:零代码构建企业级大模型应用

Kong AI网关终极指南&#xff1a;零代码构建企业级大模型应用 【免费下载链接】kong &#x1f98d; The Cloud-Native API Gateway and AI Gateway. 项目地址: https://gitcode.com/gh_mirrors/kon/kong 还在为AI模型集成而头疼吗&#xff1f;开发团队不懂AI服务配置&am…

作者头像 李华
网站建设 2026/4/15 10:18:01

JmalCloud 私有云盘:重新定义个人数据安全与管理

JmalCloud 私有云盘&#xff1a;重新定义个人数据安全与管理 【免费下载链接】jmal-cloud-view JmalCloud 是一款私有云存储网盘项目&#xff0c;能够简单安全管理您的云端文件 项目地址: https://gitcode.com/gh_mirrors/jm/jmal-cloud-view 在数据泄露频发的今天&…

作者头像 李华
网站建设 2026/4/15 18:16:06

极速下载神器:bilix让视频下载和直播录制变得如此简单

在当今数字化时代&#xff0c;视频下载工具已成为许多用户的必备利器。无论是想要保存B站上的精彩内容&#xff0c;还是需要进行直播录制&#xff0c;bilix都能提供闪电般的下载体验。这款开源工具专为处理视频和直播流下载任务而生&#xff0c;支持从多个平台高效获取视频资源…

作者头像 李华
网站建设 2026/4/16 9:20:05

2025年必学的5大滚动动画技巧:lax.js实战完全手册

2025年必学的5大滚动动画技巧&#xff1a;lax.js实战完全手册 【免费下载链接】lax.js Simple & lightweight (<4kb gzipped) vanilla JavaScript library to create smooth & beautiful animations when you scroll. 项目地址: https://gitcode.com/gh_mirrors/l…

作者头像 李华
网站建设 2026/4/15 23:55:54

如何快速配置WeChatPlugin-MacOS:微信助手的完整使用指南

WeChatPlugin-MacOS是专为macOS平台设计的微信功能增强插件&#xff0c;通过智能应答、远程操作、消息保留等核心功能&#xff0c;显著提升微信使用体验。本指南将详细介绍如何从零开始安装配置这款实用微信助手&#xff0c;让新手用户也能轻松掌握各项实用功能。 【免费下载链…

作者头像 李华