如何用 PWA 技术实现可离线的电子商务网站?

前言

近年来,随着移动端设备的普及,手机成为了人们生活中不可或缺的工具之一。同时,人们对于网站性能和用户体验的要求也越来越高。因此,一种名为“渐进式Web应用程序(PWA)”的技术逐渐兴起。该技术不仅可以提高网站性能,改善用户体验,还能实现离线访问。

在本文中,我们将深入介绍如何用 PWA 技术实现可离线的电子商务网站。

什么是 PWA?

PWA(Progressive Web Apps),即渐进式Web应用程序,是一种利用现代Web开发技术,以更接近原生应用的方式进行打造的Web应用程序。它可以提供更好的性能、更好的用户体验,同时也支持离线访问。

为什么选择 PWA 实现电商网站?

使用PWA技术可以带来以下好处:

  1. 更好的性能 - 由于PWA角色更接近于本机应用,因此加载速度比普通Web应用程序更快。

  2. 更好的用户体验 - PWA不像普通的Web应用程序,需要将用户从浏览器中打开到一个新的页面。它们能够在屏幕上为用户提供与本机应用程序相同的体验。

  3. 支持离线访问 - PWA将网站缓存到设备上,在没有互联网连接的情况下仍然能够访问。

如何实现一个可离线的 PWA 电商网站?

步骤一:创建代表性页面

在开始之前,首先需要创建一个代表性的电商页面。在该页面上,您需要使用必需的 HTML 、CSS和Javascript创建一个完整的网站。在这个例子中,我们将使用 React框架来搭建电商网站。

下面是一个基础的电商页面:

--------- -----
------

------
  ----- ----------------
  ----- --------------- ---------------------------- -------------------
  -------------------
  ----- ---------------- -----------------
-------

------
  ---- ----------------
  ------- ------------------------
-------

-------

步骤二:添加 PWA 功能

在创建了页面之后,您需要添加PWA功能。幸运的是,Google为我们提供了Workbox库,可使此进程非常简单。

在这个例子中,我们将使用Workbox推荐的方法。Workbox 提供了一个 CLI 工具,你可以安装它,使用如下命令:

--- ------- ----------- --------

然后,运行下面的命令,可以自动添加 PWA 功能所需的文件和代码:

------- ------

运行上述命令会引导您完成以下步骤:

  1. 提供您网站的URL。
  2. 配置您的缓存策略,以决定哪些文件需要缓存。
  3. 配置您的服务工作线程的名称和位置。
  4. 确认您的配置。

运行完上述命令后,您会发现项目根目录下生成了一个 javascript文件夹,其中包含了 PWA 所需的相关文件。

步骤三:注册服务工作线程

PWA 的核心是服务工作线程。服务工作线程是一种允许网络请求被拦截、存储和操作响应的 JavaScript Worker。我们需要在网站根目录下创建一个service-worker.js文件和一个注册脚本registerServiceWorker.js 。

registerServiceWorker.js 的基本代码如下:

-- ---------------- -- ---------- -
  ------------------------------- -------- -- -
    -------------------------------------------------------------------- -------------- -
      -------------------------- ------------ ---------- ---- ------ -- --------------------
    -- -------- ----- -
      -------------------------- ------------ ------- -- -----
    ---
  ---
-

需要说明的是,在浏览器的开发模式下无法启动 ServiceWorker,为了达到这个目的,在开发中可以安装 npm 包 serve,使用 serve 命令可以开启一个本地服务器将应用运行起来,方式如下:

--- ------- -- -----
----- -- -----

步骤四:缓存并离线

下一步是要确保您的网站可以缓存并离线访问。我们需要做的第一件事就是添加一个缓存清单。此清单定于哪个文件是需要缓存和离线访问的。

-- -----------------
----------------------------------------

通过以上代码,Workbox 将缓存host root下的所有文件。接下来,如果您想多缓存一些特定的请求,可以使用precacheAndRoute

-------------------------------------
  -------------- ------------------------------------ -----------
---

步骤五:支持推送通知

最后,我们还需要将电商网站的 PWA 功能扩展到桌面,并将其开发为桌面应用程序。在实现这个功能之前,您需要生成安全密钥。请按照以下步骤生成 Key:

  1. 打开控制台。
  2. 选择“应用程序”。
  3. 在较新的版本中,您将看到通知部分。单击查看一些密钥和 ID。
  4. 单击“生成”的按钮,然后从生成的密钥和ID中选择一个。
-- ------
----- ---------------------- - ----- -- -- -
  ----- -------------- - ----------
  ----- ---------- - --- ---------------------
  ----- -------- - ----- ------------------------------------------------------ -
    ------ ---
  ---
  ----- ------------ - ----- --------------------------------
    ---------------- -----
    --------------------- ----------------------------------
  ---
  ------ ----------------- -
    ------- -------
    ----- -----------------------------
    -------- -
      --------------- ------------------
    -
  ---
-

---
 - - ------ ------ ---------- ------
 - --------
 --
-------- -------------------------------- -
  ----- ------- - ------------- - ------------------- - -- - ---
  ----- ------ - ------------- - --------
    -------------- ----
    -------------- -----
  ----- ------- - --------------------
  ----- ----------- - --- ---------------------------
  --- ---- - - -- - - --------------- ---- -
    -------------- - ----------------------
  -
  ------ ------------
-

步骤六:测试您的电商网站

完成以上步骤后,您可以测试您的在线电商网站。启动本地服务器 serve -s build,并在工具栏上单击“安装”按钮以添加缩略图。使用Chrome DevTools的Network Tab可以模拟无网络情况,然后浏览您的网站看看是否支持离线访问。

总结

本文深入介绍了如何使用PWA技术实现可离线的电子商务网站,并介绍了相关代码示例。如果您正在开发一个类似的网站,希望这篇文章能对您有所帮助。PWA技术是一项重要的进步,有助于提高网站性能和用户体验,同时使我们的应用变得更加可靠。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64c5ee8d95c405902ee40fec


猜你喜欢

  • ECMAScript 2017 中的 Object.getOwnPropertySymbols:什么是 symbols?

    在 ECMAScript2015 中,symbols 出现了。该类型是用于创建私有类成员的新型基本数据类型。它们是一种不可变的类型,可以被用作对象属性的键。尽管许多人已经熟悉了 symbols,但 O...

    1 年前
  • 在 Vue.js 中使用 mixins 实现组件复用

    Vue.js 是一个流行的 JavaScript 框架,具有响应式和组件化的特性,使得开发者可以快速开发出高质量的应用程序。在 Vue.js 中复用组件是非常重要和必要的,因此 Vue.js 提供了 ...

    1 年前
  • ECMAScript 2016:如何利用拼音搜索 EaseJS 文档?

    在前端开发中,我们经常需要查阅 API 文档来解决问题或获取新知识。作为 JavaScript 的一种常用库,EaseJS 提供了丰富的 API,但是中文文档上的英文单词和方法名,有时很难准确记住,这...

    1 年前
  • CSS Reset 在网站架构设计中的运用

    什么是 CSS Reset? CSS Reset 是一组 CSS 样式规则代码片段,用于规范化 Web 页面在不同浏览器和平台上的默认样式和行为。这些默认样式和行为可能会影响你的布局和设计,因此 CS...

    1 年前
  • 省区公交无障碍导览系统设计与实现

    随着社会的发展和人们生活品质的提高,公交系统越来越重要,而无障碍导览系统作为公交系统的重要组成部分,也越来越受到关注。本文将介绍一个基于前端技术的省区公交无障碍导览系统的设计与实现,为希望开发类似系统...

    1 年前
  • Node.js 使用 WebSocket 技术构建实时应用

    随着互联网的发展,实时通信变得越来越重要。在 Web 应用程序中,实时通信使用 WebSocket 技术已成为一种主流解决方案。 Node.js 提供了一个强大的 WebSocket 库,可以帮助开发...

    1 年前
  • RxJS 中的 mergeScan 操作符的适用场景及使用技巧

    RxJS(Reactive Extensions for JavaScript)是针对异步编程的 JavaScript 库,它提供了丰富的操作符来处理数据流。其中,mergeScan 操作符是处理数据...

    1 年前
  • 在 VS Code 中使用 ESLint 插件进行代码优化

    前言 ESLint 是一个开源的 JavaScript 代码检查工具,可以用来检查 JavaScript 代码中存在的问题,并提供相应的解决方案。它可以根据用户自定义的规则,对 JS 代码进行静态分析...

    1 年前
  • Express.js 框架中如何使用模板引擎

    前言 在 Web 开发过程中,我们需要使用模板引擎来快速生成动态的 HTML 页面。在 Express.js 框架中,我们可以使用许多流行的模板引擎来实现这一点,例如 EJS、Pug、Handleba...

    1 年前
  • Redis 持久化问题解决指南

    概述 Redis是一个开源的内存数据结构存储系统,其主要优势在于快速读写、支持多种数据结构、数据持久化等特点。在使用Redis时,数据持久化是一个非常重要的问题,因为Redis是一个内存存储系统,如果...

    1 年前
  • Next.js 页面调试:关于调试花絮的探讨

    引言 在开发过程中,调试是我们不可避免的流程。尤其在前端开发中,由于各种原因,我们需要花费更多的时间来调试页面。在这篇文章中,我们将深入探讨前端调试的本质,详细讲解 Next.js 页面调试的方法以及...

    1 年前
  • ECMAScript 2019 (ES10): String.prototype.matchAll()

    在以往的 ES6 和 ES7 中,我们可以通过 String.prototype.match() 方法来实现字符串匹配的功能,但是这个方法只适用于匹配单个目标,而不能做到全局匹配。

    1 年前
  • ES11 中使用可选链快捷解决对象操作中的多次校验

    在 Web 前端开发中,我们经常要操作对象。但是,对于包含嵌套的对象,如果我们需要访问它们的某个属性,我们需要经过多次判断来确保对象及其各个嵌套属性的存在性。这个过程反复琢磨,让人感到痛苦和无聊。

    1 年前
  • Node.js 在 Serverless 架构中的实践

    随着云计算的发展,Serverless 架构越来越受到开发者的关注,它可以让开发者专注于业务逻辑,而无需关心服务器的管理。在 Serverless 架构中,最常用的 FaaS(函数即服务)平台之一是 ...

    1 年前
  • Sequelize 连接 MySQL 数据库时的常见问题及解决方法

    前言 前端工程师在开发中经常需要使用到数据库,而 MySQL 是一个专业且流行的关系型数据库,它被广泛应用于各种 Web 应用程序的后端。在使用 MySQL 数据库时,一个常见的选择是使用 Seque...

    1 年前
  • 使用 Docker 部署 Web 应用的最佳实践

    随着云计算、容器技术的快速发展,Docker 已经成为了现代应用程序开发、测试和部署的标准。在使用 Docker 部署 Web 应用时,我们需要考虑多个方面的问题,比如镜像管理、容器编排、持久化存储以...

    1 年前
  • 使用 Koa 和 Socket.IO 构建实时聊天应用

    当今互联网时代,实时通信变得越来越重要,聊天应用则成为了一个非常常见的例子。在前端技术中,Koa 和 Socket.IO 是两个非常流行的工具,它们可以一起使用来构建一个实时聊天应用。

    1 年前
  • LESS 中使用 Mixins 扩展样式

    LESS 是一种 CSS 预处理器,它为我们提供了许多超越原生 CSS 功能的特性,如变量、函数和 Mixins 等。其中 Mixins 是 LESS 的一个重要特性,它可以帮助我们实现样式的复用和扩...

    1 年前
  • Jest 测试中的调试技巧

    作为前端开发者,我们经常需要编写自动化测试来保证我们的代码的正确性。在使用 Jest 进行测试时,有时我们需要进行调试来更好地理解代码内部的运行过程和功能,从而更好地捕获和解决问题。

    1 年前
  • 使用 AngularJS 实现音乐播放器

    前言 音乐播放器是一个多媒体应用程序,它可以播放本地保存的音频文件以及与流媒体协议相容的网络流媒体。在Web前端中,通过使用AngularJS框架,我们可以很容易地实现一个基本的音乐播放器。

    1 年前

相关推荐

    暂无文章