1、自动更新js (AutoUpdate.js)
import { Modal } from "antd"let lastSrcs;
const scriptReg = /\<script.*src=["'](?<src>[^"']+)/gm;
async function extractNewScripts() {const html = await fetch('/?_timnestamp=' + Date.now()).then(res => {return res.text();})scriptReg.lastIndex = 0;let result = [];let match;console.log(html)while ((match = scriptReg.exec(html))) {result.push(match.groups.src)}return result;
}async function needUpdate() {const newScripts = await extractNewScripts();if (!lastSrcs) {lastSrcs = newScriptsreturn 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 = 5000;
function autoRefresh() {setTimeout(async () => {const willUpdate = await needUpdate();if (willUpdate) {Modal.success({content: '当前系统有更新,请刷新',keyboard: false,onOk: () => {location.reload(true);}});}autoRefresh();}, duration)
};
autoRefresh();
2、修改webpack出口打包文件名称
3、引入AutoUpdate.js
import './util/AutoUpdate';