示例代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>简单PWA示例</title>
    <link rel="manifest" href="/manifest.json">
</head>
<body>
    <h1>欢迎来到我的PWA示例应用</h1>
 
    <!-- 添加一个按钮来测试服务工作者的功能 -->
    <button id="offlineBtn">测试离线功能</button>
 
    <!-- 引入服务工作者 -->
    <script>
        if ('serviceWorker' in navigator) {
            navigator.serviceWorker.register('/service-worker.js')
            .then(function(registration) {
                console.log('Service Worker 注册成功,范围是:', registration.scope);
            })
            .catch(function(error) {
                console.log('Service Worker 注册失败:', error);
            });
        }
 
        document.getElementById('offlineBtn').addEventListener('click', function() {
            alert('即使在离线状态下,这个信息也可以显示!');
        });
    </script>
</body>
</html>

服务工作者

服务工作者是PWA的核心组件,它们可以拦截和处理网络请求,使应用在离线时仍然可用。以下是一个简单的服务工作者示例代码:

self.addEventListener('install', function(event) {
    console.log('Service Worker 安装成功');
});
 
self.addEventListener('fetch', function(event) {
    event.respondWith(
        caches.match(event.request).then(function(response) {
            return response || fetch(event.request);
        })
    );
});

Manifest文件

Manifest文件定义了PWA的基本信息,如名称、图标和启动URL等。确保你的项目包含一个manifest.json文件,并在HTML中正确引用。

{
  "name": "我的PWA应用",
  "short_name": "PWA",
  "start_url": "/index.html",
  "display": "standalone",
  "background_color": "#ffffff",
  "description": "这是一个简单的PWA应用示例。",
  "icons": [
    {
      "src": "/icon-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "/icon-512x512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ]
}

提示与技巧

  • 缓存策略: 为了优化加载速度和减少网络请求次数,合理使用缓存策略非常重要。在服务工作者中,可以根据资源类型和重要性选择不同的缓存策略,比如“Cache First”或“Network First”。

  • 调试工具: 在开发过程中,可以利用浏览器提供的调试工具(如Chrome DevTools)来查看和管理服务工作者、缓存数据以及其他相关信息。

  • 渐进增强: 确保你的应用在不支持PWA特性的浏览器上依然能够正常运行。通过渐进增强技术,逐步为用户提供更好的体验。

  • 安全性: PWA需要在HTTPS环境下运行,以确保数据传输的安全性。因此,在部署之前要确保你的服务器支持HTTPS。