我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue实现自动检测以及版本的更新

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 class="lazy" data-src=./assets/index.b3865953.js> </script> 
  <body>
    <div id=app></div><script class="lazy" data-src=./js/WsUtil.js type=text/javascript charset=utf-8></script>
  </body>
</html>

仔细观察返回数据不难发现script标签里的 <script type=module crossorigin class="lazy" data-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.class="lazy" data-src)
      }
      return result;//返回数组
    }

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

2.检查是否需要更新

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

代码如下:

  async function needUpdate(){
      const newScripts = await newScripts();//调用newScripts
      if(!lastclass="lazy" data-srcs){//如果之前没有保存页面js地址的话,进行一次保存,初始化并存下当前数据
          lastclass="lazy" data-srcs = newScripts;
          return false;
        }
        let result = false ;
        if(lastclass="lazy" data-srcs.length !== newScripts.length){
          result = true;
        }
        for(let i = 0;i<lastclass="lazy" data-srcs.length;i++){
          if(lastclass="lazy" data-srcs[i] !== newScripts[i]){
            result = true;
            break ;
          }
        }
      }
      lastclass="lazy" data-srcs = 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)
}

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

总结

以上就是今天要讲的内容,本文仅仅简单介绍了实现线上更新的一种思路,相比在生产环境下实现热更新,或者是使用websocket相对来说都是比较麻烦的,而且还需要改动服务器,这种做法只需要一小段js函数即可解决,并且效率也是非常高的,对整个系统的运行,基本上是没有任何负面影响,因为单页面模式下,每次请求的页面实际上传输的数据非常少,所以两秒一次,完全不会给站点增加负荷。

到此这篇关于Vue实现自动检测以及版本的更新的文章就介绍到这了,更多相关Vue检测版本内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

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

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

Vue实现自动检测以及版本的更新

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue实现自动检测以及版本的更新

当用户在当前站点停留时间比较长,中途站点进行升级更新之后,用户如果不刷新页面就任然停留在旧的页面里,如何让用户收到一个提示,引导用户进行更新操作呢?下面给大家介绍如何站点更新如何在生产环境提示用户更新,进行页面刷新操作,核心原理其实很简单
2023-05-14

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

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

android 版本检测 Android程序的版本检测与更新实现介绍

做个网站的安卓客户端,用户安装到自己手机上,如果我出了新版本怎么办呢?要有版本更新功能。 本来版本检测最好可以自动进行。但如果每次开启程序,都要先检测一轮,是一种浪费,毕竟版本更新是小概率的事情。或许可以程序开启的时候,判断一下时间,单日就
2022-06-06

Android编程实现自动检测版本及自动升级的方法

本文实例讲述了Android编程实现自动检测版本及自动升级的方法。分享给大家供大家参考,具体如下: 步骤: 1.检测当前版本的信息AndroidManifest.xml-->manifest-->android:versionName。 2
2022-06-06

Vite版本更新检查实现页面自动刷新的解决思路

这篇文章主要给大家介绍了关于Vite版本更新检查实现页面自动刷新的解决思路,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
2023-02-08

uniapp中实现App自动检测版本升级的示例代码

本文主要介绍了uniapp中实现App自动检测版本升级的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-03

Android应用开发的版本更新检测升级功能怎么实现

这篇文章主要介绍“Android应用开发的版本更新检测升级功能怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android应用开发的版本更新检测升级功能怎么实现”文章能帮助大家解决问题。一.
2023-06-30

Shell脚本实现自动检测修改最快的Ubuntu软件源

每次装好Ubuntu,对于大多数用户来说,首先要做的事就是手动修改/etc/apt/sources.list文件,将里面的官方软件源地址更换为自己学校或者公司的软件源。当我们更换一个工作环境后,可能伴随着又要替换旧的软件源地址。 笔者觉得这
2022-06-04

如何使用MD5的检测方法以及shell脚本实现linux系统文件完整性检测

如何使用MD5的检测方法以及shell脚本实现linux系统文件完整性检测,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。今天发现个可以检测系统文件完整性的shell脚本,自
2023-06-06

如何实现检测网站down掉后自动发信的shell脚本代码

小编给大家分享一下如何实现检测网站down掉后自动发信的shell脚本代码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!代码如下:#!/bin/bash#website test scriptswhile true;do
2023-06-09

如何编写Shell脚本实现自动检测修改最快的Ubuntu软件源

这篇文章主要讲解了“如何编写Shell脚本实现自动检测修改最快的Ubuntu软件源”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何编写Shell脚本实现自动检测修改最快的Ubuntu软件源
2023-06-09

Android App实现应用内部自动更新的最基本方法示例

这只是初步的实现,并没有加入自动编译等功能。需要手动更改更新的xml文件和最新的apk。 共涉及到四个文件! 一、客户端 AndroidUpdateTestActivity:程序首页 main.xml:首页布局 Update:更新类
2022-06-06

数据库周刊33丨腾讯Tbase新版本发布;“2020数据技术嘉年华”有奖话题遴选;阿里云技术面试题;APEX 实现数据库自动巡检;MYSQL OCP题库……

墨天轮数据库周刊第33期发布啦,每周1次推送本周数据库相关热门资讯、精选文章、干货文档。 摘要:墨天轮数据库周刊第33期发布啦,每周1次推送本周数据库相关热门资讯、精选文章、干货文档。热门资讯1、中国移动国产OLTP数据库中标公告:南大金仓阿里,
数据库周刊33丨腾讯Tbase新版本发布;“2020数据技术嘉年华”有奖话题遴选;阿里云技术面试题;APEX 实现数据库自动巡检;MYSQL OCP题库……
2021-07-13

数据库周刊33丨Oracle7月CPU安全预警;腾讯Tbase新版本发布;“2020数据技术嘉年华”有奖话题遴选;阿里云技术面试题;APEX 实现数据库自动巡检;MYSQL OCP题库……

热门资讯1、中国移动国产OLTP数据库中标公告:南大金仓阿里,万里开源中兴 分获大单【摘要】近日,中国移动公布了 OLTP 自主可控数据库联合创新项目中标公告。公告显示:国产数据库中,南大通用、阿里巴巴、中兴通讯、人大金仓、万里开源 ,五大数据库产品榜上有名。
数据库周刊33丨Oracle7月CPU安全预警;腾讯Tbase新版本发布;“2020数据技术嘉年华”有奖话题遴选;阿里云技术面试题;APEX 实现数据库自动巡检;MYSQL OCP题库……
2016-08-07

编程热搜

目录