vite vue3 pwa 更新提醒

本文介绍了如何在使用vite-plugin-pwa启用ProgressiveWebApp(PWA)后,添加一个提醒组件,当有新内容可用时,提示用户手动刷新应用。通过修改`vite.config.ts`配置和创建自定义组件,确保在离线状态下提供便捷的更新体验。

效果

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 = false
  needRefresh.value = false
}
</script>

<template>
  <div
      class="pwa-toast"
      role="alert"
  >
    <div class="message">
      <span v-if="offlineReady">
        应用已就绪
      </span>
      <span v-else>
        新内容可用,点击重新加载按钮以更新。
      </span>
    </div>
    <el-button
        type="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>
### Vue 3Vite 中实现 PWA 的方法 为了在基于 Vue 3Vite 构建的应用程序中启用 PWA 功能,可以利用 `vite-plugin-pwa` 插件来简化这一过程[^1]。 #### 安装依赖项 首先安装必要的插件: ```bash npm install vite-plugin-pwa --save-dev ``` 接着更新项目的 `vite.config.ts` 文件以引入并配置该插件: ```typescript import { defineConfig } from &#39;vite&#39; import vue from &#39;@vitejs/plugin-vue&#39; import { VitePWA } from &#39;vite-plugin-pwa&#39; export default defineConfig({ plugins: [ vue(), VitePWA({ registerType: &#39;autoUpdate&#39;, includeAssets: [&#39;favicon.svg&#39;, &#39;robots.txt&#39;], manifest: { name: "My App", short_name: "App", description: "My Progressive Web Application built with Vue.js and Vite.", theme_color: "#ffffff", icons: [ { src: &#39;/pwa-192x192.png&#39;, sizes: &#39;192x192&#39;, type: &#39;image/png&#39; }, { src: &#39;/pwa-512x512.png&#39;, sizes: &#39;512x512&#39;, type: &#39;image/png&#39; } ] } }) ], }) ``` 上述代码片段展示了如何通过设置 `manifest` 属性来自定义应用程序清单文件的内容。这包括指定应用名称、描述以及图标等信息。 完成这些更改后重新启动开发服务器即可使新功能生效。当访问网站时应该能够在浏览器开发者工具下的“Application”标签页看到已注册的服务工作者和服务范围内的缓存资源列表[^2]。 此外,在满足一定条件的情况下(例如HTTPS环境),页面右上角会出现提示用户添加到主屏幕的小横幅广告或按钮。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过君_P

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值