PWA 快速上手:完整步骤指南

本文将介绍 PWA 的基本概念和步骤,让你快速上手 PWA 项目的开发。

什么是 PWA?

PWA,全称 Progressive Web App(渐进式 Web 应用),是一种可以像原生应用一样运行的 Web 应用。它采用渐进增强的设计模式,逐步提高应用的性能和体验,并且可以离线使用。与原生应用相比,PWA 易于开发,易于升级,可跨多个平台使用,并且无需在应用商店中发布。因此,PWA 可以为用户提供更好的体验,同时为开发者提供更高的收益和便捷性。

PWA 的功能和特点

PWA 具有以下功能和特点:

  1. 渐进式的。可以逐步改善用户体验,增强应用性能,无需一步到位。
  2. 可靠性强。即使在不稳定的网络环境下也能稳定运行,并且可以离线使用。
  3. 快速响应。具有与原生应用类似的响应速度和流畅的体验。
  4. 安全的。使用 HTTPS 进行通信,有效地保护用户数据和应用程序。
  5. 可发现性。可以安装和添加到主屏幕,简单易用。
  6. 可更新。无需下载或更新应用,自动更新所有用户。

如何创建 PWA 应用

下面是创建 PWA 应用的完整步骤:

步骤 1:创建基本架构

创建一个基本的 HTML 文件,并添加一个 service worker 文件和一个 manifest.json 文件。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>PWA Demo</title>
    <link rel="manifest" href="/manifest.json" />
  </head>
  <body>
    <h1>Hello, World!</h1>
    <script src="/service-worker.js"></script>
  </body>
</html>
{
  "name": "PWA Demo",
  "short_name": "PWA Demo",
  "start_url": ".",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#000000",
  "icons": [
    {
      "src": "/icons/icon-72x72.png",
      "sizes": "72x72",
      "type": "image/png"
    },
    {
      "src": "/icons/icon-96x96.png",
      "sizes": "96x96",
      "type": "image/png"
    },
    {
      "src": "/icons/icon-128x128.png",
      "sizes": "128x128",
      "type": "image/png"
    },
    {
      "src": "/icons/icon-144x144.png",
      "sizes": "144x144",
      "type": "image/png"
    },
    {
      "src": "/icons/icon-152x152.png",
      "sizes": "152x152",
      "type": "image/png"
    },
    {
      "src": "/icons/icon-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "/icons/icon-384x384.png",
      "sizes": "384x384",
      "type": "image/png"
    },
    {
      "src": "/icons/icon-512x512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ]
}

步骤 2:注册 service worker

将下面的代码添加到 service-worker.js 文件中,以注册和安装 service worker。

self.addEventListener("install", function(event) {
  event.waitUntil(
    caches.open("v1").then(function(cache) {
      return cache.addAll([
        "/",
        "/index.html",
        "/style.css",
        "/script.js",
        "/icons/icon-72x72.png",
        "/icons/icon-96x96.png",
        "/icons/icon-128x128.png",
        "/icons/icon-144x144.png",
        "/icons/icon-152x152.png",
        "/icons/icon-192x192.png",
        "/icons/icon-384x384.png",
        "/icons/icon-512x512.png"
      ]);
    })
  );
});

self.addEventListener("fetch", function(event) {
  event.respondWith(
    caches.match(event.request).then(function(response) {
      if (response) {
        return response;
      }
      return fetch(event.request);
    })
  );
});

步骤 3:添加离线体验

在 Service Worker 安装和启用后,我们可以通过更改 fetch 事件来拦截和缓存请求。我们可以将资源缓存到名为 v1 的缓存中。

在上面的代码中,我们检查请求是否已在缓存中。如果是,则返回缓存的数据。如果请求不在缓存中,则使用网络请求数据,同时将该请求的响应缓存到缓存中,以供以后使用。这就是 PWA 的关键部分,它使应用程序可以在没有网络连接的情况下进行运行,并且可以访问缓存中的数据。

步骤 4:添加可安装性

在 index.html 文件中添加以下代码,即可实现“添加到主屏幕”功能,让用户可以将应用添加到桌面:

<button onclick="install()" id="installButton">Install</button>

<script>
  let deferredPrompt;
  const installButton = document.getElementById("installButton");
  window.addEventListener("beforeinstallprompt", e => {
    e.preventDefault();
    deferredPrompt = e;
    installButton.style.display = "block";
  });
  installButton.addEventListener("click", () => {
    installButton.style.display = "none";
    deferredPrompt.prompt();
    deferredPrompt.userChoice.then(choiceResult => {
      if (choiceResult.outcome === "accepted") {
        console.log("User accepted the A2HS prompt");
      } else {
        console.log("User dismissed the A2HS prompt");
      }
      deferredPrompt = null;
    });
  });
</script>

步骤 5:部署应用

将 HTML、CSS 和 JavaScript 文件上传到服务器,并确保 service-worker.js 和 manifest.json 文件在指定位置。确保 HTTPS 协议下运行以保护您的应用程序和用户数据。

至此,我们已经完成了一个简单的 PWA 应用程序!

总结

本文介绍了 PWA 的基本概念和步骤,并通过示例代码展示了如何创建 PWA 应用。通过了解和实践本文介绍的过程,可以帮助开发者更好地了解和掌握 PWA 技术,提高应用的性能和体验,为用户提供更好的服务。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a23f13add4f0e0ffa54b2c


纠错反馈