当前位置:首页 > 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 中可自定义缓存策略:

react 实现pwa

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 工具进行验证:

react 实现pwa

  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'
      ]);
    })
  );
});

部署注意事项

确保服务器正确配置:

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

标签: reactpwa
分享给朋友:

相关文章

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取日期 在 React 项目中,可以通过 Moment.js 库轻松处理日期和时间。以下是几种常见的日期获取方法。 安装 Moment.js 确保项目中已安装 Momen…

react 如何执行

react 如何执行

安装 Node.js 和 npm React 开发需要 Node.js 环境,因为它提供了 npm(或 yarn)包管理工具。从 Node.js 官网 下载并安装最新 LTS 版本。安装完成后,在终端…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gr…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…