Next.js 如何支持 PWA?

阅读时长 8 分钟读完

随着移动互联网的普及,用户对网站的速度和用户体验要求越来越高。PWA(Progressive Web App),渐进式 Web 应用程序,是一个新的 Web 应用程序模型。在 PWA 中,网站被设计成类似于本地应用程序的方式,可以通过诸如安装、推送通知、离线工作等功能提供更好的用户体验。在这篇文章中,我们将介绍如何使用 JavaScript 框架 Next.js 来支持 PWA。

Next.js 的优势

Next.js 是一个 React 框架,提供了一些便利的工具和功能,使得在构建复杂应用程序时更加容易。其中最突出的优势是自带服务器端渲染(SSR),这意味着 Next.js 可以在服务端生成 HTML,这样可以大大减少页面加载时间。另一个重要的优势是自带预渲染(SSG),可以在构建时生成 HTML 文件,这样可以更快地加载静态页面。这些功能可以为 PWA 提供良好的基础。

支持 PWA 的关键特性

为了支持 PWA,必须实现以下关键特性:

Service Workers

Service Workers 是一种运行在后台的 JavaScript 文件,可以拦截所有网络请求。它们可以使我们对缓存策略进行更细粒度的控制,并缓存应用程序需要的文件。

在 Next.js 中,可以使用 workbox-webpack-plugin 插件来自动生成 Service Workers。只需在 next.config.js 文件中添加以下代码:

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

-------------- - ---------------------
  ---- -
    ----- ---------
    --------------- -
      -
        ----------- ------------
        -------- ---------------
        -------- -
          ---------- ---------------
          ----------- -
            ----------- ----
          --
        --
      --
    --
  --
---
展开代码

Web App Manifest

Web App Manifest 是一个 JSON 文件,描述 PWA 的属性。它包含了应用程序的名称、图标、颜色等信息。它还指定了我们的应用程序如何在本地主屏幕上显示。

在 Next.js 中,可以在 /public 文件夹中创建 manifest.json 文件,并指定应用程序的属性。示例代码如下:

-- -------------------- ---- -------
-
  ------- --- -----
  ------------- --- -----
  -------------- --- ----------- --- -----
  -------- -
    -
      ------ ---------------------------
      -------- ----------
      ------- -----------
    --
    -
      ------ ---------------------------
      -------- ----------
      ------- -----------
    -
  --
  -------------- ----------
  ------------------- ----------
  ---------- ------------
-
展开代码

开发支持 PWA 的 Next.js 应用程序

我们现在已经知道了要支持 PWA 的关键技术特性,下面是使用 Next.js 开发 PWA 的步骤。

安装依赖

首先,在命令行中输入以下命令以创建一个名为 my-app 的 Next.js 应用程序:

cd 进入 my-app 文件夹,然后运行以下命令安装依赖:

配置插件

在项目的根目录下,创建一个名为 next.config.js 的文件,并添加以下代码:

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

-------------- - ---------------------
  ---- -
    ----- ---------
    --------------- -
      -
        ----------- ------------
        -------- ---------------
        -------- -
          ---------- ---------------
          ----------- -
            ----------- ----
          --
        --
      --
    --
  --
---
展开代码

在这个配置文件中,我们使用 next-offline 和 next-pwa 来启用 Service Workers 和 Web App Manifest。

创建 manifest.json 文件

在 /public 文件夹中创建 manifest.json 文件,并添加以下代码:

-- -------------------- ---- -------
-
  ------- --- -----
  ------------- --- -----
  -------------- --- ----------- --- -----
  -------- -
    -
      ------ ---------------------------
      -------- ----------
      ------- -----------
    --
    -
      ------ ---------------------------
      -------- ----------
      ------- -----------
    -
  --
  -------------- ----------
  ------------------- ----------
  ---------- ------------
-
展开代码

创建 Service Worker 文件

在 /public/sw.js 文件夹中创建 sw.js 文件,并添加以下代码:

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

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

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

----------------------------------
展开代码

注册 Service Worker

在 pages/_app.js 中,使用以下代码注册 Service Worker:

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

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

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

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

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

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

------ ------- -----
展开代码

测试和构建

现在可以通过运行以下命令启动 Next.js 应用程序:

在浏览器中打开 http://localhost:3000,即可看到你的应用程序已经成为 PWA 了!

最后,可以构建生产版本的应用程序,使用以下命令:

结论

本文介绍了如何使用 Next.js 支持 PWA。Next.js 的自带服务器端渲染和预渲染功能,使得构建 PWA 变得更加容易。我们学习了使用 Service Workers 和 Web App Manifest 的必要步骤,并演示了如何在 Next.js 中实现 PWA。

通过启用 PWA,可以提供更好的用户体验,并为将来的增长做好准备。如果你还没有尝试过 PWA,那么现在是时候开始了!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674ecc27e884a3e30f2a0efa

纠错
反馈

纠错反馈