中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue實現自動檢測及版本更新的方法是什么

發布時間:2023-03-31 14:24:40 來源:億速云 閱讀:117 作者:iii 欄目:開發技術

這篇“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實現自動檢測及版本更新的方法是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    vue
    AI

    盐亭县| 尖扎县| 如皋市| 海口市| 汉中市| 比如县| 淳安县| 乌鲁木齐市| 唐山市| 左贡县| 鸡东县| 三江| 上栗县| 莎车县| 长春市| 高密市| 盖州市| 商丘市| 自治县| 吉林市| 梅河口市| 托克逊县| 普兰店市| 宁阳县| 渝中区| 金堂县| 崇左市| 怀集县| 渑池县| 东平县| 二连浩特市| 崇仁县| 杨浦区| 民乐县| 武冈市| 鄂托克前旗| 讷河市| 岳阳县| 库尔勒市| 黎川县| 布拖县|