返回 slidev
pwa.ts
根目录 / packages / client / setup / pwa.ts
1 import { ref } from 'vue'
2
3 export const pwaCaching = ref(false)
4 export const pwaReady = ref(false)
5
6 export async function setupPWA() {
7 if (!__SLIDEV_FEATURE_PWA__)
8 return
9
10 const { registerSW } = await import('virtual:pwa-register')
11
12 pwaCaching.value = true
13
14 registerSW({
15 immediate: true,
16 onOfflineReady() {
17 pwaCaching.value = false
18 pwaReady.value = true
19 // Auto-dismiss "ready" indicator after 4 seconds
20 setTimeout(() => {
21 pwaReady.value = false
22 }, 4000)
23 },
24 onRegisteredSW(_swUrl, _registration) {
25 // SW registered; caching is in progress until onOfflineReady fires
26 },
27 })
28 }
29
29 lines TYPESCRIPT