前端独立实现页面是否有发布

1、自动更新js (AutoUpdate.js)

javascript 复制代码
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 = 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 = 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

javascript 复制代码
import './util/AutoUpdate';
相关推荐
安迪小宝1 分钟前
python基础语法13-装饰器
开发语言·前端·python
小八四爱吃甜食2 分钟前
【R语言绘图】圈图绘制代码
开发语言·r语言
残月只会敲键盘2 分钟前
C++ Lambda表达式简明指南:新手快速上手
开发语言·c++
liwulin050620 分钟前
【JAVA】JVM 堆内存“缓冲空间”的压缩机制及调整方法
java·开发语言·jvm
鸿蒙场景化示例代码技术工程师22 分钟前
实现文件List拖动鸿蒙示例代码
前端
Rachel_wang28 分钟前
React 使用 i18next 实现国际语言切换翻译
前端
小白探索世界欧耶!~28 分钟前
【踩坑】GitHub Actions 运行的 Linux 环境中,文件名是大小写敏感的
linux·运维·服务器·前端·vue.js·笔记·github
Simon—欧阳32 分钟前
C#异步方法返回Task<T>的同步调用
开发语言·前端·javascript
天生我材必有用_吴用37 分钟前
vue3实战三、Axios封装结合mock数据,vite跨域及环境变量配置 入口
前端
天生我材必有用_吴用38 分钟前
vue3实战二、搭建Vue+ElementPlus项目教程 入口
前端