npm包 parcel-plugin-workbox 使用教程

作者:AI助理,时间:2021年7月16日

前言

随着前端技术的不断发展,我们的网站越来越复杂,需要使用各式各样的框架和工具来进行开发、管理和部署。其中,离线缓存已成为了越来越受欢迎的技术之一。

Workbox 是一个由 Google 提供的 JavaScript 库,它提供了在 PWA 应用中缓存和离线访问的一些强大而灵活的功能。通过使用 Workbox,我们可以更方便地实现将业务逻辑离线化。

parcel-plugin-workbox 是一款用于 Parcel 的自动化 Workbox 插件,提供一种简单而方便的方式,让我们更轻松地实现在 Parcel 项目中使用 Workbox 的功能。

在本篇文章中,我们将详细介绍如何使用 parcel-plugin-workbox 将你的 Parcel 项目转变为一个可离线访问的 PWA 应用。

依赖环境

在开始之前,需要确保你已经按照以下工具的要求安装了必要的环境:

  • Parcel 1.10.0 或更高版本
  • node.js 10.0.0 或更高版本
  • npmyarn

安装

首先,我们需要在项目中安装 parcel-plugin-workbox。可以使用以下命令:

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

或者使用 yarn

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

配置 Parcel

接下来,我们需要告诉 Parcel 该如何使用 parcel-plugin-workbox

我们需要在 package.json 文件中添加以下配置:

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

上述代码中,我们在 devDependencies 中新增了 parcel-plugin-workbox ,并在 workbox 中定义了一些基本配置:

  • swSrc 用于指向我们的 service worker 文件的路径(相对于项目根目录)。
  • swDest 是我们输出的代码中 sw 文件的路径(也相对于项目根目录)。
  • globDirectory 是我们想将哪些文件缓存(相对于 workbox 中定义的文件)。注意:在用于生产环境的 Parcel 构建时,我们需要将 globDirectory 设置为输出目录(在本例中为 dist)。
  • globPatterns 包含了我们想缓存的文件名模式列表。

创建 service worker

接下来,我们需要创建我们的 service worker 文件。在 sw.js 文件中添加以下代码:

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

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

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

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

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

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

上述代码中,我们首先导入了 workbox 库。接着,我们通过 importScripts 加载了 workbox-sw.js 库。这是我们将用于生成 service worker 的文件。然后,我们注册了一些路由,以实现对不同类型的资源的缓存控制。

我们使用了以下 workbox 策略:

  • cacheFirst :在缓存可用时返回缓存数据。在请求第一次失败后,将更新缓存并返回新数据。我们用它来缓存下载的图像和 Google 字体。
  • staleWhileRevalidate :返回缓存的资源,并在后台请求更新资源。我们将使用它来缓存静态资源,如 JavaScript 和 CSS 文件。
  • networkFirst :首先尝试从网络获取资源,然后使用缓存。我们将使用它来缓存通过 API 获取的数据。

您可以结合自己的业务场景来调整 workbox 的路由配置,以实现自己所期望的缓存策略。

运行和构建

package.json 文件中,我们已经定义了启动和构建脚本。现在,我们可以使用以下命令来启动开发服务器并运行应用程序:

--- -----

在启动完成后,我们可以在浏览器中访问 http://localhost:1234 来查看我们的应用。

在开发模式下生成的 service worker 不会缓存任何资源。要使用缓存,需要运行:

--- --- -----

在构建完成后,我们可以在 dist 目录下找到生成的文件。将这些文件上传到生产服务器,就可以让用户在没有网络连接的情况下使用我们的应用了。

示例代码

你可以在以下 GitHub 仓库中找到示例代码:https://github.com/AI-Assistant/npm-package-parcel-plugin-workbox-guide

结束语

通过使用 parcel-plugin-workbox,我们可以轻松地将 Workbox 集成到我们的 Parcel 项目中,完善我们的 PWA 应用。希望本篇文章能够对你在使用 Workbox 和 Parcel 进行前端开发时提供帮助和指导。

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


猜你喜欢

  • npm包seekout使用教程

    简介 在前端开发中,我们经常需要使用一些工具来辅助我们完成开发工作,比如构建工具、包管理工具等。npm作为一个包管理器,在前端开发中被广泛使用。在npm仓库中存在着大量可供使用的包,其中就包括了see...

    6 年前
  • npm 包 postcss-modules-resolve-imports 使用教程

    在前端开发中,CSS 是我们日常工作中经常接触的一部分,而 PostCSS 是一个强大的工具,可以帮助我们更好地处理 CSS,并且方便地集成到我们的开发流程中。而 postcss-modules-re...

    6 年前
  • npm 包 css-modules-require-hook 使用教程

    什么是 css-modules-require-hook? css-modules-require-hook 是一款非常实用的 npm 包,它可以帮助我们更好地使用 CSS Modules 技术。

    6 年前
  • npm 包 babel-plugin-css-modules-transform 使用教程

    如果你是一名前端开发工程师,那么你一定知道在开发过程中使用 CSS 是必不可少的一部分。然而,随着项目越来越大,CSS 的维护变得越来越困难。这时,使用 CSS 模块化的技术可以帮助我们解决这个问题。

    6 年前
  • npm 包 isbot 使用教程

    简介 isbot 是一个用于识别用户代理中是否包含爬虫蜘蛛标识符的 npm 包。该包能够判断大部分主流搜索引擎的爬虫,并返回一个布尔值,即 whetherUserAgentIsBot,以便于前端开发者...

    6 年前
  • npm 包 imagemin-loader 使用教程

    前言 随着前端技术的发展,网页的性能优化变得越来越重要。其中,图片是占据页面体积比例最大的元素。因此,对图片进行压缩是一种有效的性能优化方法。 imagemin-loader 是一个 npm 包,提供...

    6 年前
  • npm 包 multi-loader 使用教程

    在前端开发中,我们常常需要加载多个文件,例如多个 CSS 样式表或多个 JavaScript 文件。而使用多个 <link> 或 <script> 标签手动加载,会使 HTML...

    6 年前
  • npm 包 react-shallow-testutils 使用教程

    react-shallow-testutils 是一个基于 React 的浅渲染工具。它为我们提供了一种在本地运行单元测试的方法,而无需使用浏览器。 在本文中,我们将会学习如何使用 react-sha...

    6 年前
  • npm 包 image-webpack-loader 使用教程

    今天我们来聊聊如何使用 npm 包 image-webpack-loader 优化前端图片加载的性能。 什么是 image-webpack-loader? image-webpack-loader 是...

    6 年前
  • npm 包 pwa-srcset-loader 使用教程

    前言 在移动化的今天,PWA(Progressive Web Apps)已经成为了越来越多公司和开发者关注的方向。PWA 不仅能够提供和原生应用一样的用户体验,而且还能够带来更好的性能和用户留存率等优...

    6 年前
  • npm 包 react-display-name 使用教程

    在 React 开发中,有时我们需要知道当前渲染的组件的名称,这时候就需要用到 react-display-name 这个 npm 包。本文将详细介绍如何使用 react-display-name 包...

    6 年前
  • npm 包 tiny-warning 使用教程

    前言 在前端开发中,经常需要判断某些变量或操作是否合法,如果不合法需要给出一些警告提示。而 tiny-warning 就是一款可以进行警告提示的 npm 包。本文将介绍 tiny-warning 的使...

    6 年前
  • npm 包 theming 使用教程

    在前端开发过程中,经常会需要使用皮肤来美化网站或应用的外观。theming 是一个非常方便且易于使用的 npm 包,它可以帮助开发者快速地创建自定义皮肤。 什么是 theming? theming 是...

    6 年前
  • npm 包 is-in-browser 使用教程

    前言 随着前端技术的不断发展和应用场景的变化,前端工程师们面临着越来越多的挑战。而 npm 作为前端开发中最常用的包管理工具之一,在方便开发者使用各种开源库的同时,也在持续地为前端技术的进步做出贡献。

    6 年前
  • npm 包 cash-cat 使用教程

    介绍 cash-cat 是一个用于处理货币的 npm 包,它支持货币的格式化、加减乘除等常见操作,并支持不同货币之间的转换。本文将详细介绍 cash-cat 的使用方法和功能特性,并提供实际示例代码供...

    6 年前
  • npm 包 cash-rm 使用教程

    在前端开发中,常常需要进行文件的删除操作。在此过程中,使用命令行执行 rm 命令可以进行文件删除,但是如果你想用 JavaScript 代码来执行这个操作,该怎么办呢?在使用 Node.js 进行开发...

    6 年前
  • npm 包 grunt-keybase-dir 使用教程

    什么是 grunt-keybase-dir? grunt-keybase-dir 是一个 Grunt 插件,用于在 Grunt 任务中获取 Keybase 用户的 Keybase 文件夹路径。

    6 年前
  • npm 包 JSONPath 使用教程

    在前端开发中,很多时候需要对 JSON 数据进行处理和操作,比如从一个复杂的 JSON 结构中提取出需要的数据,或者对 JSON 数据进行筛选、排序等操作。这时我们可以使用 JSONPath 这个 n...

    6 年前
  • NPM 包 json-pointer 使用教程

    在前端开发中,我们经常需要对 JavaScript 对象进行深度操作,以获取或设置特定属性的值。NPM 包 json-pointer 提供了一种简单、轻量级的方法,让我们能够快速访问嵌套对象的属性。

    6 年前
  • npm 包 grunt-update-json 使用教程

    前言 在前端项目中,我们经常需要读写 JSON 文件来配置一些选项或者管理一些数据。在这个过程中,手动修改 JSON 文件费时费力,而且容易出错。因此,使用 npm 包 grunt-update-js...

    6 年前

相关推荐

    暂无文章