vite vue3 pwa 更新提醒

效果

vite-plugin-pwa插件启用pwa后默认会在后台自动更新应用,并在关闭所有已开启的页面并重新打开后激活
通过此方法可以以消息方式提醒用户手动刷新激活更新应用
在这里插入图片描述

方法

已经使用vite-plugin-pwa插件启用pwa

  • 修改vite.config.ts
export default defineConfig({...plugins: [...VitePWA({// 修改此项,如果此项值为autoUpdate,则为自动给更新registerType: "prompt",}),...],...
})
  • 创建提醒组件
<script setup lang="ts">
import {useRegisterSW} from 'virtual:pwa-register/vue'
import {ElButton} from "element-plus"
import "element-plus/es/components/button/style/css"const {offlineReady,needRefresh,updateServiceWorker,
} = useRegisterSW({immediate: true,onRegisteredSW(swUrl, r) {r && setInterval(async () => {// 检查更新,如果vite.config.ts配置为autoUpdate,此操作将直接触发更新,并刷新页面激活更新await r.update()}, 30000)},
})async function close() {offlineReady.value = falseneedRefresh.value = false
}
</script><template><divclass="pwa-toast"role="alert"><div class="message"><span v-if="offlineReady">应用已就绪</span><span v-else>新内容可用,点击重新加载按钮以更新。</span></div><el-buttontype="primary"@click="updateServiceWorker()">重新加载</el-button><el-button @click="close">关闭</el-button></div>
</template><style scoped>
.pwa-toast {position: fixed;right: 0;bottom: 0;margin: 16px;padding: 12px;border: 1px solid #8885;border-radius: 4px;z-index: 1;text-align: left;box-shadow: 3px 4px 5px 0px #8885;background-color: var(--el-bg-color);
}.pwa-toast .message {margin-bottom: 8px;
}
</style>
  • 在应用中引入提醒组件
    App.vue
<script setup lang="ts">
import {ElConfigProvider} from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import ReloadPrompt from "./components/ReloadPrompt.vue";
</script><template><el-config-provider :locale="zhCn">...<reload-prompt/></el-config-provider>
</template>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读——Large Selective Kernel Network for Remote Sensing Object Detection

目录 基本信息标题目前存在的问题改进网络结构另一个写的好的参考 基本信息 期刊CVPR年份2023论文地址https://arxiv.org/pdf/2303.09030.pdf代码地址https://github.com/zcablii/LSKNet 标题 遥感目标检测的大选择核网络 目前存在的问题 相对较少的工作考虑到强大的先验知…

python自动解析301、302重定向链接

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程&#xff0c;尽在下方&#xff0c;赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了&#xff0c;直接在文末名片自取就可 使用模块requ…

8 个 Promise 高级用法

在 js 项目中&#xff0c;promise 的使用应该是必不可少的&#xff0c;但我发现在同事和面试者中&#xff0c;很多中级或以上的前端都还停留在promiseInst.then()、promiseInst.catch()、Promise.all等常规用法&#xff0c;连async/await也只是知其然&#xff0c;而不知其所以然…

Rockchip平台 远程OTA服务搭建

Rockchip平台 远程OTA服务搭建 1. 概述 远程OTA升级服务是一种通过互联网远程更新Rockchip设备的固件和软件的方法。这种服务对于确保设备安全性、修复错误和添加新功能非常重要。 本文档将引导您完成在Rockchip平台上搭建远程OTA升级服务的过程。 在阅读本文的前&#xff…

python常用stl

列表 list lst = [] lst.append(6) lst.insert(index, value) lst.pop(index)lst.sort() lst.reverse() lst.extend(another_list) 注意 列表也可以像数组一样x[i], 但前提是列表非空(初始化过),否则会报错 17. 电话号码的字母组合 - 力扣(LeetCode) 字典 phoneMap= …

Vue3新的状态管理库-Pinia(保姆级别教程)

目录 1.什么是Pinia2.为什么使用Pinia3.创建项目4.检查Pinia的安装版本5.main.js引入Pinia6.定义Store-组合式API写法(推荐)7.getters的实现8.action的异步实现9.storeToRefs 1.什么是Pinia Pinia是Vue的专属的最新状态管理库, 是Vuex状态管理工具的替代品 vue.js官网 https:…

面试之并查集

输入和输出的注意点:scanf读取字符时会读取空格和回车 而scanf读字符串时会自动忽略空格和回车 并查集快速处理两类操作: 将2个集合合并询问两个元素是否在一个集合当中 几乎O(1)完成这两个操作 基本原理 每个集合用一棵树来表示,树根的编号就是整个集合的编号, 每个节点存储…

L14D6内核模块编译方法

一、内核模块基础代码解析 一个内核模块代码错误仍然会导致的内核崩溃。 GPL协议&#xff1a;开源规定&#xff0c;使用内核一些函数需要 1、单内核的缺点 单内核扩展性差的缺点减小内核镜像文件体积&#xff0c;一定程度上节省内存资源提高开发效率不能彻底解决稳定性低的缺…

【新品发布】四核A53超高性价比!RK3562系列核心板及开发板震撼上市

RK3562系列产品采用 Rockchip 新一代 64 位处理器 RK3562&#xff08;Quad-core ARM Cortex-A53&#xff0c;主频最高 2.0GHz&#xff09;&#xff0c;最大支持 8GB 内存&#xff1b;内置独立的 NPU&#xff0c;可用于轻量级人工智能应用&#xff0c;RK3562 拥有 PCIE2.1 / USB…

图文验证码怎么测试及自动化测试怎么解决验证码问题?

前言 在对安全性有要求的软件&#xff08;系统&#xff09;中都存在验证码&#xff0c;那我们应该怎么进行测试呢&#xff0c;在自动化测试中又该怎么通过验证码使自动化顺利进行下去呢&#xff1f; 首先&#xff0c;来简单认识下验证码 测试验证码&#xff0c;首先我们应当…

Redis客户端通信RESP协议

ESP是Redis序列化协议&#xff0c;Redis客户端RESP协议与Redis服务器通信。 RESP协议在Redis 1.2中引入&#xff0c;但在Redis 2.0中成为与Redis服务器通信的标准方式。这个通信方式就是Redis客户端实现的协议。 RESP实际上是一个序列化协议&#xff0c;它支持以下数据类型&a…

提升职场竞争力,掌握高级开发面试知识!

Java后端开发技能&#xff1a; JVM&#xff1a;内存模型、类加载机制、双亲委派、垃圾回收算法、垃圾回收器、空间分配担保策略、可达性分析、强软弱虚引用、GC的过程、三色标记、跨代引用、内存泄漏与溢出多线程&#xff1a;集合、Synchronized、ThreadLocal、AQS、线程池JVM…

Docker私有仓库打开2375端口(linux)

前言 在我们开发测试过程中&#xff0c;需要频繁的更新docker镜像&#xff0c;然而默认情况下&#xff0c;docker的2375端口是关闭的&#xff0c;下面介绍如何打开端口。 1、打开步骤 1.1、修改配置 登录docker所在服务器&#xff0c;修改docker.service文件 vi /usr/lib/sys…

如何正确高效使用墨西哥专线?

在当今全球化的物流行业中&#xff0c;跨境运输服务已经成为许多企业拓展国际市场的重要手段。然而&#xff0c;由于各国法律法规、文化差异以及运输环节的复杂性&#xff0c;企业在进行跨境运输时可能会遇到诸多挑战。为了解决这些问题&#xff0c;一些专业的物流公司推出了“…

SpringBoot Redis 基础使用

redis是一个key-value。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash&#xff08;哈希类型&#xff09;。 Redis能做什么&#xff1a; 1. 缓存&#xff0c;毫无疑问这…

【flutter / dart 版本】Websocket获取B站直播间弹幕教程——基于B站直播开发平台

教程 B站直播开发平台弹幕获取教程01 代码 1、引入相关库 dependencies:crypto: ^3.0.3uuid: ^4.1.0dio: ^5.3.3archive: ^3.3.72、创建bili_project.dart import dart:convert; import package:bili_websocket.dart; import package:crypto/crypto.dart; import package:…

Centos中清除因程序异常终止,导致的残留的Cache/buff_drop_caches命令---linux工作笔记063

我这里因为nifi程序背压设置的不合理,导致,内存和CPU消耗过高,系统崩溃,但是重启NIFI以后,发现 对应的执行top命令,看到,系统的buff/cache 依然没有减少,说明内存被浪费了,残留在这里没有被回收. 用这个办法执行这个命令; linux会自动触发清理,但是只有在内存不够用的时候才会…

SQLite Autoincrement特性

摘要 AUTOINCREMENT会使用额外的CPU、内存和磁盘空间&#xff0c;如不是特别需要尽量不要使用。类型为INTEGER PRIMARY KEY的列会被作为rowid&#xff08;WITHOUT ROWID表除外&#xff09;&#xff0c;并且是一个8字节有符号整数。执行INSERT操作时如果未提供rowid&#xff0c…

【AN-Animate教程——熟悉工作区】

【AN-Animate教程——熟悉工作区】 初始页面创建舞台主舞台界面其他常用板块 本篇内容&#xff1a;Animate用途 重点内容&#xff1a;熟悉工作区&#xff0c;以及基本操作 工 具&#xff1a;Adobe Animate 2022 初始页面 在初始页面当中&#xff0c;我们可以看到一个忍者和一个…

Mainflux IoT:Go语言轻量级开源物联网平台,支持HTTP、MQTT、WebSocket、CoAP协议

Mainflux是一个由法国的创业公司开发并维护的安全、可扩展的开源物联网平台&#xff0c;使用 Go语言开发、采用微服务的框架。Mainflux支持多种接入设备&#xff0c;包括设备、用户、APP&#xff1b;支持多种协议&#xff0c;包括HTTP、MQTT、WebSocket、CoAP&#xff0c;并支持…