PWA 实战指南

PWA(渐进式 Web 应用)让网页拥有接近原生 App 的体验:离线可用、可安装、可推送。

Manifest 配置

{
  "name": "我的应用",
  "short_name": "应用",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#3b82f6",
  "icons": [
    { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" },
    { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }
  ]
}

Service Worker 缓存

// sw.js
const CACHE = "v1";
self.addEventListener("install", (e) => {
  e.waitUntil(
    caches.open(CACHE).then((c) => c.addAll(["/", "/app.js", "/style.css"]))
  );
});

self.addEventListener("fetch", (e) => {
  e.respondWith(
    caches.match(e.request).then((r) => r || fetch(e.request))
  );
});

核心能力

  • 离线可用:Service Worker 缓存静态资源
  • 可安装:添加到主屏幕
  • 消息推送:Push API 触达用户
  • 后台同步:网络恢复后同步数据

PWA 是 Web 和原生之间最佳的平衡点,尤其适合内容型、工具型应用。