文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Vue实现自动检测及版本更新的方法是什么

2023-07-05 20:06

关注

这篇“Vue实现自动检测及版本更新的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue实现自动检测及版本更新的方法是什么”文章吧。

一、思路

1,每隔一小段时间fetch请求一次服务器首页数据,解析为纯文本。

2,识别纯文本里对应script标签路径文件指纹是否发生变动

3,有变动则弹框提示引导用户进行刷新操作

二、实现步骤

1.调用fetch拿到首页的html并且转为纯文本格式

核心代码:

fetch('/').then(res=>res.text()).then(res=>console.log(res))

返回结果

由于vue是单页面,所以返回数据一般都不多,一目了然如下:

<!DOCTYPE html><html lang=en><head>  <meta charset=UTF-8>  <link rel=icon href=./favicon.ico> <meta name=viewport content="width=device-width,initial-scale=1">  <script type=module crossorigin src=./assets/index.b3865953.js> </script>   <body>    <div id=app></div><script src=./js/WsUtil.js type=text/javascript charset=utf-8></script>  </body></html>

仔细观察返回数据不难发现script标签里的 <script type=module crossorigin src=./assets/index.b3865953.js> </script> 所对应的文件路径是./assets/index.b3865953.js 这是由于前端工程化会自动给文件带上文件指纹,只要这些文件有变动,那么这些文件指纹也就是hash值也会跟着变化,每隔一小段时间去分析页面中script元素的js,只要发现js路径有变化,说明这个系统是有所改动。

具体代码如下:

//请求首页,timestep是为了避免缓存数据

    //请求首页    async function newScripts(){      const html = await fetch('/?timestep='+ Date.now()).then((res)=>res.text());      scriptReg.lastIndex = 0;//正则分析页面所有url地址      let result = [];//保存分析数据到一个数组里      let match;      while((match=scriptReg.exec(html))){        result.push(match.groups.src)      }      return result;//返回数组    }

//数组里就记录了这一次请求首页在首页当中所有的js的获取地址

2.检查是否需要更新

首先调用newScripts拿到当前页所有js路径

代码如下:

  async function needUpdate(){      const newScripts = await newScripts();//调用newScripts      if(!lastSrcs){//如果之前没有保存页面js地址的话,进行一次保存,初始化并存下当前数据          lastSrcs = newScripts;          return 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;    }

3.有则弹出

每隔两秒调用 needUpdate检查更新函数,判断是否有变化,有更新则提示用户刷新页面,然后在调用自身,不断的进行检查,从而达到提示更新的目的。

代码如下:

const timeData=2000;//检查间隔时间function autRef(){  setTimeout(async()=>{    const willUp = await needUpdate();//调用检查更新函数    if(willUp){      const  result = confirm('数据更新点击确认刷新当前页')    };    if(result){      location.reload();//刷新当前页    }    autRef();  },timeData)}

这里只做了个简单的弹窗,当然大家可以继续优化,可以写成任意自己想要的样子。

以上就是关于“Vue实现自动检测及版本更新的方法是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯