生产环境下自动更新修改后的数据

87 阅读1分钟

1.在根目录下创建一个js文件写入以下代码

let lastSrcs ; // 上一次获取到的script地址
const scriptReg = /\<script.*src=["'](?<src>[^"']+)/gm;

// 获取最新页面中的script链接
async function extractNewScripts(){
    const html = await fetch('/?_timestamp=' + Date.now()).then((resp)=>resp.text);
   scriptReg.lastIndex=0;
   let result = [];
   let match;
   while((match = scriptReg.exec(html))){
   result.push(match.groups.src)
   }
   return result;
}

async function needUpdate(){
    const newScripts = await extractNewScripts();
    if(!lastSrcs){
        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;
}

const DURATION = 2000;
function autoRefresh(){
    setTimeout(async () =>{
    const willUpdate = await needUpdate();
    if(willUpdate){
    const result = confirm("页面有更新,点击更新刷新页面");
    if(result){
        location.reload();
    }
    }
    autoRefresh();
    ),DURATION);
}

autoRefresh();

2.在main.js 引入上面的文件 import '' 即可大功告成哦!!!