发布于 2026-01-06 7 阅读
0

PWA:学习、实施和爱上基于 NextJS 的 PWA,只需 2 分钟

PWA:学习、实施和爱上基于 NextJS 的 PWA,只需 2 分钟

当我开始我的网页开发之旅时,将网页应用转换为移动应用的概念一直让我感到不知所措。作为一名自学成才的开发者,我对如何做到这一点几乎一窍不通。我花了三个月的时间才意识到其中的优势以及背后的方法论。我认为现在是时候回馈社区了。那么,让我们从现在开始,用两分钟的时间学习这一切吧!

了解 PWA ✨

如果说移动应用和网页结合,那这个结合体就是 PWA。PWA 的核心在于帮助企业构建外观和体验与原生移动应用相似的 Web 应用,但使用的是 JavaScript、CSS 和 HTML 等 Web 技术。PWA 提供推送通知、离线支持等诸多功能。渐进式 Web 应用默认是安全的。PWA 的技术要求应用必须通过 HTTPS 协议才能正常运行。越来越多的公司开始采用 PWA,因为它可以显著缩短应用的开发、测试和维护时间。

Gartner预测,多达20%的公司将放弃其原生移动应用程序。他们认为,PWA将成为更可行的替代方案。

使用 PWA 的公司

事实上,包括阿里巴巴在内的多家公司已经证明,与其开发多个原生应用,不如集中精力开发 PWA 应用,这样可以提高转化率和平均购买金额。既然我们的博客承诺在 2 分钟内用 NextJS 构建 PWA,那就让我们直接进入正题吧。

时间开始⏳

在这里,我将从零开始,但你完全可以将 PWA 添加到你现有的项目中。

yarn create next-app --typescript 
Enter fullscreen mode Exit fullscreen mode

我们已经从支持 TypeScript 的基本 NextJS 入门模板开始。现在,让我们添加一个能够帮我们完成后续工作的依赖项。

yarn add next-pwa @types/next-pwa
Enter fullscreen mode Exit fullscreen mode

现在,我们需要manifest.json 文件来指定应用程序的元数据。

{
  "name": "PWA Application with Next",
  "short_name": "PWA",
  "icons": [
    {
      "src": "/192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "/384x384.png",
      "sizes": "384x384",
      "type": "image/png"
    },
    {
      "src": "/512x512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ],
  "theme_color": "#000000",
  "background_color": "#000000",
  "start_url": "/",
  "display": "standalone",
  "orientation": "portrait"
}
Enter fullscreen mode Exit fullscreen mode

您可以使用此方法为您的应用程序生成清单文件,或者复制上面的清单文件。您需要三张尺寸分别为 512 x 512、384 x 384 和 192 x 192 的图片,您可以从这里生成。将所有这些文件(图片和 manifest.json)放入 public 目录。

让我们_document.ts在 pages 目录下创建一个页面。你可以在文件中添加代码。

import Document, { Html, Head, Main, NextScript } from "next/document";

class NextDocument extends Document {
  render() {
    return (
      <Html>
        <Head>
          <link rel="manifest" href="/manifest.json" />
          <link rel="apple-touch-icon" href="/192x192.png"></link>
          <meta name="theme-color" content="#000000" />
        </Head>
        <body>
          <Main />
          <NextScript />
        </body>
      </Html>
    );
  }
}

export default NextDocument;
Enter fullscreen mode Exit fullscreen mode

我们快完成了!🥳 让我们最后添加新的配置next.config.js

/** @type {import('next').NextConfig} */
const withPWA = require("next-pwa");

const nextConfig = {
  reactStrictMode: true,
};

module.exports = withPWA({
  pwa: {
    dest: "public",
    register: true,
    skipWaiting: true,
  },
  nextConfig,
});

Enter fullscreen mode Exit fullscreen mode

恭喜!🥳 你构建 PWA 应用的速度真快。希望你能在 2 分钟内完成,并且过程中没有遇到任何错误。

让我再补充一点,教你如何为你的应用程序添加离线支持。_offline.tsx在 pages 目录下创建一个文件,并将文件内容替换为以下代码:

import type { NextPage } from "next";

const Offline:NextPage = () =>{
   return (<h1>You need to check your internet connection 😢 </h1>);

}

export default Offline;

Enter fullscreen mode Exit fullscreen mode

务必添加一些炫酷的 UI 元素,让离线页面更具交互性,而不仅仅是一个简单的声明。下面是我为开源项目Fission做的一个贡献,即添加支持离线功能的 PWA(渐进式 Web 应用),Fission专注于为 Kubernetes 构建无服务器函数和工作流。

PWA 在裂变中的添加

如果您在使用过程中遇到错误,导致应用程序无法正常运行,或者您只是想和我交流,欢迎随时通过LinkedIn联系我💕

文章来源:https://dev.to/aniket762/pwa-learning-implementing-and-loving-ft-nextjs-under-2-mins-il7