一个用于实时检测 web 应用更新的 JavaScript 库

一个用于实时检测 web 应用更新的 JavaScript 库

概述

在现代 web 应用开发中,前端代码的更新频率较高,尤其是单页应用(SPA)。当应用发布新版本时,如何及时通知用户并引导其刷新页面以加载最新资源,成为了一个亟待解决的问题。version-polling 库应运而生,旨在提供一种简单高效的方式来检测前端应用的版本更新,并提示用户进行页面刷新。官网

适用场景

用户在浏览器中打开某 web 应用(通常是后台管理系统)很长时间且未刷新页面时,如果应用有新功能添加或问题修复,用户可能无法及时知道有新版发布。这样会导致用户继续使用旧版,影响用户体验和数据准确性,甚至出现程序报错。

功能特性

  • 针对前端 web 单页应用(SPA)而设计

  • 纯前端技术实现,使用简单无需后端支持

  • 提供三种版本控制方式

    1. 使用 HTTP ETag 作为版本标识符
    2. 使用 chunkHash 作为版本标识符 v1.3.0
    3. 使用 version.json 文件管理版本号 v1.3.0
  • 支持 TypeScript

浏览器兼容性

适用于支持原生 ES Modules 的浏览器

复制代码
chrome >= 87
edge >= 88
firefox >= 78
safari >= 14

安装

  • 通过 npm 引入,并通过构建工具进行打包
bash 复制代码
# 本地项目安装
npm install version-polling --save
  • 通过 CDN 方式引入,直接插入到 HTML
html 复制代码
<script src="https://unpkg.com/version-polling/dist/version-polling.min.js"></script>

使用参考前端静态 HTML 页面自动检测更新示例

使用示例

新建一个名为 autoUpdate.js

js 复制代码
// autoUpdate.js
// 在应用入口文件中使用: 如 main.js, app.jsx
import { createVersionPolling } from "version-polling";

createVersionPolling({
  eventTriggerList: ["myAutoUpdateEvent"],
  silent: process.env.NODE_ENV === "development", // 开发环境下不检测
  onUpdate: (self) => {
    // const result = confirm('页面有更新,点击确定刷新页面!');
    // if (result) {
    self.onRefresh();
    // } else {
    // 	self.onCancel();
    // }
  },
});

// 在需要检测更新的页面中触发事件
// 路由跳转后执行
router.afterEach((to, from) => {
  // 监听到服务端前端站点更新了,执行页面刷新
  dispatchEvent(new CustomEvent("myAutoUpdateEvent"));

  // 处理生命体征不在生命体体征模块时,返回首页或者进入系统配置是去除本地缓存,然后进入体征总览执行相关的操作
  if (to.path?.indexOf(signSystemFlag) === -1) {
    sessionStorage.removeItem("vitalSign_manualGetData");
  }
});
相关推荐
m0_73691422几秒前
服务器上pip install spacy卡住解决方法
开发语言·python
冰暮流星1 分钟前
javascript之回调函数
开发语言·前端·javascript
qq_417695054 分钟前
基于C++的区块链实现
开发语言·c++·算法
电商API_180079052475 分钟前
电商平台公开数据采集实践:基于合规接口的数据分析方案
开发语言·数据库·人工智能·数据挖掘·数据分析·网络爬虫
米丘5 分钟前
Rollup 打包工具
前端
小陈工5 分钟前
2026年3月22日技术资讯洞察:数据库优化进入预测时代,网络安全威胁全面升级
java·开发语言·数据库·python·安全·web安全·django
We་ct6 分钟前
LeetCode 74. 搜索二维矩阵:两种高效解题思路
前端·算法·leetcode·矩阵·typescript·二分查找
moneyinto7 分钟前
Three.js 必背核心方法
前端
2401_894241927 分钟前
基于C++的反射机制探索
开发语言·c++·算法
wuhen_n9 分钟前
Vue3 组件中的图片懒加载与渐进式加载
前端·javascript·vue.js