使用 PWA 构建 React 应用程序

随着 Internet 视频通信和在线游戏等新技术的普及,人们对 Web 应用程序的要求越来越高。在这种情况下,使用 PWA(渐进式 Web 应用程序)构建 React 应用程序是很明智的选择。

在本文中,我们将介绍如何使用 PWA 构建 React 应用程序。我们将讨论 PWA 的概念、React 的基础、PWA 的基本要素、使用 React 构建 PWA 的步骤、开发和部署 React PWA 的示例代码等。

PWA 的概念

渐进式 Web 应用程序(PWA)是由 Google 在 2015 年推出的一个新技术。PWA 是指能够像应用程序一样在移动设备上运行的 Web 应用程序,这种应用程序被设计成能够脱机使用,能够为用户提供无与伦比的体验。PWA 的关键是能够运行在各种设备和浏览器上,并且能够适应不同的网络环境。

React 基础知识

React 是 Facebook 推出的一个 JavaScript 框架,它使您可以构建复杂的 UI。React 采用了虚拟 DOM(Virtual DOM)的概念,这意味着您的代码将被封装在一个虚拟 DOM 中,以便更好地管理和更新 UI。

React 基础知识包括组件、状态和属性。组件是任何在您的应用程序中所创建的 UI 的构建块。状态是数据的容器,它能够随着您的应用程序的运行而发生变化。属性是传递给组件的静态数据。

PWA 的基本元素

在设计 PWA 时需要考虑以下几个基本要素:离线缓存、Web 应用程序清单、推送通知和服务工作人员。

离线缓存:PWA 能够在设备离线的情况下缓存应用程序数据。这意味着即使没有网络连接,用户仍然可以访问您的应用程序。

Web 应用程序清单:这是一个 JSON 文件,其中包含了您的应用程序的基本信息。包括图标、名称、描述和启动 URL 等。

推送通知:与移动应用程序类似,PWA 能够通过 Web 推送协议向用户发送推送通知。

服务工作人员:这是一个后台线程,能够在您的应用程序运行时持续运行,使您的 PWA 能够离线运行并脱机缓存数据。

使用 React 构建 PWA 的步骤

  1. 创建 React 应用程序
  2. 安装必要的 PWA 文件
  3. 编写服务工作人员代码
  4. 编写 Web 应用程序清单
  5. 添加离线缓存代码和推送通知代码
  6. 编译应用程序并运行测试
  7. 部署应用程序

开发和部署 React PWA 的示例代码

创建 React 应用程序

首先,让我们使用 React 创建一个简单的应用程序。

npx create-react-app my-app

安装必要的 PWA 文件

npm install --save-dev workbox-webpack-plugin
npm install --save-dev @babel/preset-env

编写服务工作人员代码

在根目录下创建一个名为 "sw.js" 的文件,代码如下:

importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.0.0/workbox-sw.js');

workbox.precaching.precacheAndRoute(self.__WB_MANIFEST);

workbox.routing.registerRoute(
  ({request}) => request.destination === 'image',
  new workbox.strategies.NetworkFirst({
    cacheName: 'images',
    plugins: [
      new workbox.expiration.ExpirationPlugin({
        maxEntries: 60,
        maxAgeSeconds: 30 * 24 * 60 * 60, // 30 Days
      }),
    ],
  })
);

编写 Web 应用程序清单

在 public 文件夹下创建一个名为 "manifest.json" 的文件,代码如下:

{
  "name": "My App",
  "short_name": "My App",
  "icons": [
    {
      "src": "favicon.ico",
      "sizes": "64x64 32x32 24x24 16x16",
      "type": "image/x-icon"
    },
    {
      "src": "logo192.png",
      "type": "image/png",
      "sizes": "192x192"
    },
    {
      "src": "logo512.png",
      "type": "image/png",
      "sizes": "512x512"
    }
  ],
  "start_url": ".",
  "background_color": "#fff",
  "theme_color": "#000",
  "display": "standalone"
}

添加离线缓存代码和推送通知代码

在 App.js 文件中添加以下代码:

import React, { useEffect } from 'react';
import logo from './logo.svg';
import './App.css';

function App() {
  useEffect(() => {
    if ('serviceWorker' in navigator) {
      window.addEventListener('load', () => {
        navigator.serviceWorker.register('/sw.js').then(registration => {
          console.log('SW registered: ', registration);
        }).catch(registrationError => {
          console.log('SW registration failed: ', registrationError);
        });
      });
    }
  }, []);

  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

编译应用程序并运行测试

npm run build
npm install -g serve
serve -s build

部署应用程序

将生成的 "build" 文件夹上传到服务器上即可。

总结

在本文中,我们讨论了如何使用 PWA 构建 React 应用程序。我们了解了 PWA 的概念和基本要素、React 的基础知识、使用 React 构建 PWA 的步骤、开发和部署 React PWA 的示例代码等。随着这种技术的不断发展,PWA 将成为一种越来越重要的 Web 开发模式,掌握 PWA 技术将有助于您开发高效、可靠的 Web 应用程序。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65931687eb4cecbf2d7bba9f


纠错反馈