原生 PWA 技术分享

阅读时长 8 分钟读完

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 典型的生命周期:

  1. Service Worker 文件注册
  2. Service Worker 安装
  3. Service Worker 激活
  4. Service Worker 变得可以接收 fetch 事件
  5. 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

纠错
反馈