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

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';
相关推荐
申阳3 分钟前
Day 14:个人开发者的 Cloudflare 通关指南-将域名托管到 Cloudflare
前端·后端·程序员
申阳3 分钟前
Day 13:个人开发者的 Cloudflare 通关指南-R2对象存储搭建高速免费图床
前端·后端·程序员
nvd118 分钟前
niri 音频图形界面工具
前端·chrome·音视频
凯哥19708 分钟前
彻底解决 Windsurf 在 Vue DevTools 无法精准定位的问题
前端
凡人程序员10 分钟前
微前端qiankun接入的问题
前端·javascript
CharlieWang12 分钟前
AI Elements Vue,帮助你更快的构建 AI 应用程序
前端·人工智能·chatgpt
新晨43715 分钟前
JavaScript map() 方法:从工具到编程哲学的升华
前端·javascript
醒了接着睡15 分钟前
JS 对象深拷贝
javascript
少卿17 分钟前
Webpack 构建流程全解:从源码到产物的“奇幻漂流”
前端·webpack
西瓜树枝17 分钟前
前端必读:HTTP 协议核心知识全景图(三)—— 响应头详解
前端·http