PWA 简介
PWA (Progressive Web Apps) 是一种可以让网站更像本地应用程序的技术。 PWA 可以在离线情况下运行,具有更快的加载速度,更好的性能以及与桌面应用程序相似的用户体验。 Google 是 PWA 的主要倡导者,因为它们可以提供更激动人心的互联网体验,同时还可以提高网站的可访问性和可发现性。
原生 PWA 和非原生 PWA
在 PWA 的世界中,有两个术语,即原生 PWA 和非原生 PWA。原生 PWA 意味着使用 Web APIs 功能来增强应用程序。非原生 PWA 意味着在页面 header 中使用一些链接来增加应用程序的功能,例如添加到主屏幕、离线缓存和推送通知。
本篇文章将重点介绍原生 PWA 的技术。
实现原生 PWA 的技术
以下是实现原生 PWA所需的主要技术:
Service Worker
Service Worker 是一个独立的 JavaScript 文件,它可以在 Web 应用程序和网络之间充当代理服务器。它可以缓存 Web 应用程序的文件,以便它们离线访问并跟踪离线数据,例如表单提交和推送通知。
以下是 Service Worker 典型的生命周期:
- Service Worker 文件注册
- Service Worker 安装
- Service Worker 激活
- Service Worker 变得可以接收 fetch 事件
- Service Worker 卸载
App Manifest
App Manifest 是一个 JSON 文件中的配置,它提供有关 PWA 如何显示和行为的信息。它包括 PWA 的名称,图标和颜色主题。App Manifest 还定义了 PWA 的启动 URL 和起始页,以及屏幕方向和显示模式设置。
Push API
Push API 是一种 Web API,用于向用户设备推送消息。 在 PWA 中,Push API 用于与后台推送通知服务通信以接收推送通知。
PWA 的构建实例
我们将创建一个简单的幻灯片应用程序(Carousel App)作为 PWA 的示例程序,来演示 PWA 的主要特点。
步骤 1 - 创建基本的 HTML 结构
我们将在 index.html 文件中编写我们的 HTML。以下是我们示例的 HTML 结构:
--------- ----- ----- ---------- ------ ----- ---------------- ----- --------------- ---------------------------- ---------------- ----------------- --------------- ----------- ------- ------ ---- ----------------- ---- --------------- ------- ---- --------------- ------- ---- --------------- ------- ------ ------- -------
步骤 2 - 引入必要的 CSS
我们需要一些 CSS 样式来构建我们的 Carousel App。
- - ------- -- -------- -- ----------- ----------- - --------- - -------- ----- ---------- ------- ----------- ----- --------------------------- ------ ----------------- - ---------- - --------- --- - ------------------ ------- ------ ----- ------- ----- ----------- ------ -
步骤 3 - 实现 PWA 的核心功能
注册 Service Worker
我们需要向 index.html 文件添加以下脚本来注册 Service Worker。
-------- -- -------- ------- ------ -- ---------------- -- ---------- - ------------------------------- ---------- - ---------------------------------------------------------------------- - -------------------- ------ ------------ ------------- -------------- ------------------------ - -------------------- ------ ------------ --------- ------- --- --- - ---------
缓存 App Shell
我们需要使用 Service Worker 缓存应用程序的 资源 和 文件。我们的应用程序只有一张图片,我们将它们缓存在缓存中。
我们需要创建一个名为 sw.js 的 JavaScript 文件,如下所示:
--- ---------- - ------------------------ --- ----------- - - ---- ------------- ----------------- ------------- ------------ ------------ ----------- -- -------------------------------- --------------- - -- ------- ------- ----- ------- --- ----- ---------------- ----------------------- --------------------- - ------------------- -------- ------ -------------------------- -- -- --- ------------------------------ --------------- - ------------------ --------------------------- ------------------------ - -- ------ ----- ---------- ------ ---- -- ---------- - ------ --------- - -- -- ----- -- ------ --- ------- ------- ------- ------ --------------------- -- -- ---
安装应用程序
我们需要使用 Web App Manifest 定义应用程序的元数据,包括名称、图标、背景颜色和主题色。我们在 index.html 文件的头部添加一些元素:
----- -------------- ---------------------- ----- ------------------ ------------------ ----- ---------------------- ---------------------------------------
其中,href="/manifest.json"
引入了我们的 Manifest 文件。Manifest 文件包含以下内容:
- ------------- --------- ----- ------- --------- ----- ------- -------- -------- - - ------ ------------------------------- ------- ------------ -------- ------- -- - ------ ------------------------------- ------- ------------ -------- ------- -- - ------ --------------------------------- ------- ------------ -------- --------- -- - ------ --------------------------------- ------- ------------ -------- --------- -- - ------ --------------------------------- ------- ------------ -------- --------- - -- ------------ -------------- ---------- ------------ -
步骤 4 - 集成 Push API
我们需要向 Service Worker 添加接受 Push 通知的功能。我们需要在 sw.js 文件中添加以下代码:
----------------------------- --------------- - ----------------- ------------ ----------- ------- --- ----- - --------- ----- --- ------- - - ----- ---------- - ----------------- - --------- --- -------------- ----- ---------------------------------- ------ -------------------------------- ----- - ---- ----------------------------------- - -- ---------------- ----------------------------------------- -------- -- ---
结论
通过 Service Worker、App Manifest 和 Push API,我们可以创建优秀的 PWA。本文已经为你介绍了如何创建一个简单的 Carousel App,并演示了 PWA 的核心技术、模式和结构。能够使用 PWA 技术开发更好的 Web 应用程序,将会是未来 Web 开发的重要方向,我们鼓励开发者继续深入了解 PWA 的技术与应用场景。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/66efc2d26fbf96019730c27d