前端發版如何告知用戶

在具體項目場景中,前端發版后,用戶不手動刷新,則感知不到更新;經常會出現:前端更新了某個功能,導致舊功能使用出現問題,而被用戶提單;

關于這個問題有多種解決方式:

  • WebSocket ,需要后端配合
  • 接口交互,需要后端配合
  • nginx 配置
  • 前端輪詢是否更新(純前端解決)

因為后端忙,所以暫時寫了個純前端的解決方案

import { ElMessage, ElMessageBox } from 'element-plus';let lastSrcs = [] as any;const scriptReg = /\<script.*src=["'](?<src>[^"']+)/gm;
async function getscript() {const html = await fetch('/?temp=' + Date.now()).then(res => {return res.text();})scriptReg.lastIndex = 0;let result = []let match;//@ts-ignorewhile((match = scriptReg.exec(html))) {//@ts-ignoreresult.push(match.groups.src)}return result
}async function needUpdate() {const newScripts = await getscript()if(!lastSrcs.length) {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) {ElMessageBox.confirm('檢測到系統有更新,是否立即更新?','系統提示',{confirmButtonText: '更新',cancelButtonText: '稍后再說',type: 'warning',}).then(() => {window.location.reload()}).catch(() => {ElMessage.info('已取消,請稍后自己手動刷新頁面',)})}autoRefresh()},DURATION)
}autoRefresh()

再到 main.ts中引入這個文件即可

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13545.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python知識詳解【1】~{正則表達式}

正則表達式是一種用于匹配字符串模式的文本工具&#xff0c;它由一系列普通字符和特殊字符組成&#xff0c;可以非常靈活地描述和處理字符串。以下是正則表達式的一些基本組成部分及其功能&#xff1a; 普通字符&#xff1a;大多數字母和數字在正則表達式中表示它們自己。例如…

指針,指針變量,引用,取地址符,malloce()函數使用,C中“—>” 和“ . ” 作用與區別

目錄 一&#xff1a;指針,指針變量&#xff0c;引用&#xff0c;取地址符&#xff1a; 前提 &#xff1a; 1.“ * ” 的兩種用途 2." & “的兩種用途 2.1&#xff1a;引用 2.2&#xff1a;取地址 補充&#xff1a; 二 : malloc(),動態申請地址空間 1.原型定義…

Dubbo生態之初識dubbo協議

1.RPC框架 在java的發展中&#xff0c;隨著業務的越來越龐大&#xff0c;單體架構的工作繁瑣且耦合度高&#xff0c;因此單體架構過渡到了分布式架構&#xff0c;而分布式架構就必然涉及到各個服務之間的遠程通信(RPC框架)&#xff0c;RPC框架如圖所示: 工作流程: a.客戶端調…

查看當前Shell系統環境變量

查看當前Shell系統環境變量 查看命令 env效果 查看Shell變量(系統環境變量自定義變量函數) 命令 set效果 常用系統環境變量 變量名稱含義PATH與windows環境變量PATH功能一樣&#xff0c;設置命令的搜索路徑&#xff0c;以冒號為分割HOME當前用戶主目錄&#xff1a;/rootSH…

有道:一季度業績超市場預期,生成式AI商業化落地進程加快

5月23日&#xff0c;教育科技公司網易有道&#xff08;NYSE&#xff1a;DAO&#xff09;公布了2024年第一季度未經審計的財務報告。報告期內&#xff0c;受益于“AI”加“教育”雙輪驅動&#xff0c;業績表現超市場預期&#xff0c;業務健康度大幅改善。 財報顯示&#xff0c;…

5.23小結

1.java項目創新 目前想添加一個自動回復的功能和設置驗證方式有&#xff08;允許任何人添加&#xff0c;禁止添加&#xff0c;設置回答問題添加&#xff0c;普通驗證添加&#xff09; 目前只完成畫好前端界面&#xff0c;前端發送請求&#xff0c;還有表的修改 因為涉及表字…

leetcode 210.課程表II

思路&#xff1a;拓補排序 其實就是對于第一個題的問題變了一個問法&#xff0c;上一個題本質上是求有沒有環&#xff0c;這道題本質上就是讓你求出來符合沒有環的路徑輸出而已&#xff0c;本質上沒有什么區別。 不同就在于這里需要你額外開一個數組用來存儲你遍歷這個有向圖…

大語言模型量化方法對比:GPTQ、GGUF、AWQ 包括顯存和速度

GPTQ: Post-Training Quantization for GPT Models GPTQ是一種4位量化的訓練后量化(PTQ)方法&#xff0c;主要關注GPU推理和性能。 該方法背后的思想是&#xff0c;嘗試通過最小化該權重的均方誤差將所有權重壓縮到4位。在推理過程中&#xff0c;它將動態地將其權重去量化為f…

nn.Linear

文章目錄 一、nn.Linear 一、nn.Linear nn.Linear 是 PyTorch 中的一個類&#xff0c;用于定義線性變換&#xff08;全連接層&#xff09;。它是神經網絡中常用的一種層類型&#xff0c;作為輸入張量與權重矩陣之間的線性變換。 nn.Linear(in_features, out_features, biasTru…

決策樹最優屬性選擇

本文以西瓜數據集為例演示決策樹使用信息增益選擇最優劃分屬性的過程 西瓜數據集下載&#xff1a;傳送門 首先計算根節點的信息熵&#xff1a; 數據集分為好瓜、壞瓜&#xff0c;所以|y|2根結點包含17個訓練樣例&#xff0c;其中好瓜共計8個樣例&#xff0c;所占比例為8/17壞…

2024-5-4-從0到1手寫配置中心Config之基于h2的config-server

添加依賴 新建的web工程中添加h2的依賴 添加h2的配置 設置數據源和密碼設置初始化sql語句打開h2的控制臺 初始化語句創建一個config表&#xff0c;保存服務配置信息。 完成CRUD接口 controller類 mapper接口 測試 在web控制臺可以看到sql已經初始化完成&#xff0c;crud接口…

前端基礎入門三大核心之HTML篇:深入解析PNG8、PNG16、PNG24與PNG32的差異及網頁應用指南

前端基礎入門三大核心之HTML篇&#xff1a;深入解析PNG8、PNG16、PNG24與PNG32的差異及網頁應用指南 基礎概念與作用說明PNG8PNG16PNG24PNG32 代碼示例與使用場景PNG8示例PNG24示例PNG32示例 性能優化與最佳實踐防范漏洞提示結語與討論 在網頁設計與前端開發中&#xff0c;選擇…

PLC工程師按這個等級劃分是否靠譜?

在工業自動化領域&#xff0c;PLC工程師扮演著至關重要的角色&#xff0c;他們負責構建、維護自動化系統&#xff0c;推動工業4.0進程的發展。成為一名優秀的PLC工程師需要經歷不同境界的發展階段&#xff0c;每個階段都對應著不同的技能要求和責任。以下是PLC工程師的六種級別…

Kotlin協程在android中的使用總結

認識協程 引用官方的一段話 協程通過將復雜性放入庫來簡化異步編程。程序的邏輯可以在協程中順序地表達&#xff0c;而底層庫會為我們解決其異步性。該庫可以將用戶代碼的相關部分包裝為回調、訂閱相關事件、在不同線程&#xff08;甚至不同機器&#xff01;&#xff09;上調度…

JDK、JRE、編譯指令和垃圾回收機制詳解

JDK 全稱 Java SE Development Kit (Java 開發工具包) JVM虛擬機&#xff1a;Java運行的地方 核心類庫&#xff1a;Java提前編好的東西 開發工具&#xff1a; javac,java,jdb,jhat javac:Java編譯器&#xff0c;用于將Java源代碼編譯成Java字節碼文件(.class)。 java: java…

[STM32-HAL庫]AS608-指紋識別模塊-STM32CUBEMX開發-HAL庫開發系列-主控STM32F103C8T6

目錄 一、前言 二、詳細步驟 1.光學指紋模塊 2.配置STM32CUBEMX 3.程序設計 3.1 輸出重定向 3.2 導入AS608庫 3.3 更改端口宏定義 3.4 添加中斷處理部分 3.5 初始化AS608 3.6 函數總覽 3.7 錄入指紋 3.8 驗證指紋 3.9 刪除指紋 3.10 清空指紋庫 三、總結及資源 一、前言 …

[力扣題解] 797. 所有可能的路徑

題目&#xff1a;797. 所有可能的路徑 思路 深度搜索 代碼 // 圖論哦!class Solution { private:vector<vector<int>> result;vector<int> path;// x : 當前節點void function(vector<vector<int>>& graph, int x){int i;// cout <&l…

解決鼠標滾動時element-ui日期選擇器錯位的問題

解決方案&#xff1a;監聽鼠標滾動事件&#xff0c;在鼠標滾動時隱藏element-ui日期選擇器下拉框 1、先在util文件夾下創建個hidePicker.js文件&#xff0c;代碼如下&#xff1a; let el nullconst fakeClickOutSide () > {const SELECTWRAP_BODY document.body // bod…

Day37 貪心算法part04

LC860檸檬水找零(未掌握) 未掌握分析&#xff1a;20的時候找零卡住&#xff0c;同時貪心思路就想了很久 當bill[i]20的時候&#xff0c;我們有兩種找零范式&#xff0c;找零10、5和找零三個5&#xff0c;優先找零10、5&#xff0c;因為三個5是可以替代10、5的情況的&#xff0…

Nebula街機模擬器 Mac移植版(400+游戲roms)漢化版

nebula星云模擬器是電腦上最熱門的街機游戲模擬器之一&#xff0c;玩家可以通過這個小巧的模擬器軟件進行多款經典街機游戲啟動和暢玩&#xff0c;本次移植的包含400多款游戲roms&#xff0c;經典的三國志、三國戰紀、拳皇、街霸、合金彈頭、1941都包含在內。 下載地址&#xf…