当前位置:首页 > React

react 实现pwa

2026-01-26 15:57:22React

React 实现 PWA 的步骤

使用 Create React App (CRA) 初始化项目

Create React App 内置了对 PWA 的支持,只需在初始化项目时添加模板即可:

npx create-react-app my-pwa --template cra-template-pwa

配置 Service Worker

CRA 生成的 src/index.js 文件中默认注释了 Service Worker 注册代码,取消注释即可启用:

import * as serviceWorkerRegistration from './serviceWorkerRegistration';

serviceWorkerRegistration.register();

自定义 manifest.json

修改 public/manifest.json 文件以定义应用名称、图标等元数据:

{
  "short_name": "My PWA",
  "name": "My Progressive Web App",
  "icons": [
    {
      "src": "logo192.png",
      "type": "image/png",
      "sizes": "192x192"
    },
    {
      "src": "logo512.png",
      "type": "image/png",
      "sizes": "512x512"
    }
  ],
  "start_url": ".",
  "display": "standalone",
  "theme_color": "#000000",
  "background_color": "#ffffff"
}

优化离线体验

src/serviceWorkerRegistration.js 中可自定义缓存策略:

export function register(config) {
  if ('serviceWorker' in navigator) {
    window.addEventListener('load', () => {
      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
      navigator.serviceWorker.register(swUrl).then(registration => {
        registration.update();
      });
    });
  }
}

添加安装提示

在 React 组件中添加监听 beforeinstallprompt 事件:

useEffect(() => {
  window.addEventListener('beforeinstallprompt', (e) => {
    e.preventDefault();
    setDeferredPrompt(e);
  });
}, []);

构建生产环境

PWA 功能需要在 HTTPS 环境下测试,使用以下命令构建:

npm run build
serve -s build

验证 PWA 功能

使用 Lighthouse 工具进行验证:

  1. 在 Chrome 开发者工具中选择 Lighthouse
  2. 勾选 PWA 选项
  3. 运行测试确保所有核心指标通过

高级自定义

如需更精细控制,可手动配置 webpack:

// craco.config.js
module.exports = {
  webpack: {
    configure: {
      plugins: [
        new WorkboxWebpackPlugin.InjectManifest({
          swSrc: './src/sw.js',
          swDest: 'service-worker.js'
        })
      ]
    }
  }
}

更新策略

src/sw.js 中实现自定义缓存策略:

self.addEventListener('install', (event) => {
  event.waitUntil(
    caches.open('v1').then((cache) => {
      return cache.addAll([
        '/',
        '/index.html',
        '/static/js/main.chunk.js'
      ]);
    })
  );
});

部署注意事项

确保服务器正确配置:

react 实现pwa

  • 添加 HTTPS 支持
  • 设置正确的 MIME 类型
  • 配置适当的 HTTP 头(如 CSP)

标签: reactpwa
分享给朋友:

相关文章

vue实现pwa

vue实现pwa

Vue 实现 PWA 的步骤 使用 Vue CLI 创建 PWA 项目 通过 Vue CLI 可以快速创建一个支持 PWA 的 Vue 项目。确保已安装 Vue CLI,运行以下命令: vue cr…

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一…

react如何打包

react如何打包

打包 React 项目的基本步骤 React 项目通常使用 create-react-app 或类似的脚手架工具创建,这些工具内置了打包功能。以下是打包 React 项目的详细方法: 安装依赖并构建…

react如何发布

react如何发布

发布React应用的步骤 构建生产版本 使用以下命令生成优化后的生产版本代码,代码会被压缩并移除开发环境中的调试工具: npm run build 构建完成后会生成build文件夹,包含所有静态资源…

react如何滚动scroll

react如何滚动scroll

React 实现滚动的方法 使用 useRef 和 scrollTo 方法 通过 useRef 获取 DOM 元素的引用,调用 scrollTo 方法实现滚动。 import React, { us…