【推荐收藏】PWA怎么做全套资源大合集

2026-10-28 来源: 点击量

推荐收藏】PWA 怎么做全套资源大合集

一句话总纲:PWA = HTTPS + manifest.json 应用清单 + Service Worker 服务工作线程三大基石;实现桌面安装、离线可用、推送通知、独立窗口运行;本文包含原理、最简代码、缓存策略、工具链、模板、调试、打包上架、踩坑清单,适合原生 HTML、Vue、React、CMS(帝国 CMS / 逐浪 CMS)网站直接改造。

前置硬性门槛:线上必须 HTTPS;localhost本地开发不受 HTTPS 限制,HTTP 域名线上无法注册 Service Worker、无法触发安装弹窗GitHub【推荐收藏】PWA怎么做全套资源大合集

一、核心概念与原理

manifest.json(应用清单):告诉浏览器这是一个 App,定义名称、图标、启动页、主题色、显示模式(standalone 独立窗口)。放在网站根目录,html 通过 link 引入。

Service Worker(sw.js):后台独立运行 JS,不阻塞页面;生命周期:install安装 → activate激活 → fetch拦截请求;负责离线缓存、资源更新、推送通知、后台同步。

渐进增强:普通浏览器就是网页;Chrome/Edge/ 新版 Safari 支持 PWA,自动解锁桌面安装、离线能力,不兼容浏览器不影响正常访问。

能力清单:桌面 / 手机桌面图标、独立窗口、无浏览器地址栏、离线访问、后台推送、Web Share 分享、Web Payment、后台同步。

二、最简可直接复制代码(原生 HTML 零框架)

1. manifest.json(根目录)

{

"name": "我的PWA应用",

"short_name": "PWA",

"description": "PWA渐进式网页应用",

"start_url": "/",

"display": "standalone",

"background_color": "#ffffff",

"theme_color": "#2563eb",

"orientation": "portrait",

"icons": [

{"src": "/icon-192.png","sizes":"192x192","type":"image/png"},

{"src": "/icon-512.png","sizes":"512x512","type":"image/png"}

]

}

2. index.html 头部引入清单


3. index.html 底部:注册 Service Worker


4. sw.js(基础预缓存模板,根目录)

const CACHE_NAME = 'pwa-cache-v1';

const STATIC = ['/','/index.html','/style.css','/icon-192.png'];

// 安装:预缓存核心静态资源

self.addEventListener('install',e=>{

e.waitUntil(caches.open(CACHE_NAME).then(cache=>cache.addAll(STATIC)))

});

// 激活:清理旧缓存

self.addEventListener('activate',e=>{

e.waitUntil(caches.keys().then(keys=>Promise.all(keys.filter(k=>k!==CACHE_NAME).map(k=>caches.delete(k)))))

});

// 拦截请求:缓存优先(静态资源)

self.addEventListener('fetch',e=>{

e.respondWith(caches.match(e.request).then(res=>res||fetch(e.request)))

})

注意:版本号v1修改后才会触发更新;直接改 sw.js 内容,浏览器会识别变更、触发新版安装。

三、四大缓存策略(必背,不同资源选用)

Cache-First 缓存优先(静态资源:css/js/ 图片 / 字体):优先读缓存,无缓存再网络,适合不常变化带 hash 资源

Network-First 网络优先(页面、API 动态数据):优先网络,断网回退缓存页面,适合需要最新内容的页面

Stale-While-Revalidate 先返回缓存,后台更新缓存:头像、资讯列表,兼顾速度和新鲜度

Network Only 仅网络:支付、统计、埋点,禁止缓存

四、全套工具资源【直接收藏】

✅ 在线生成工具(懒人首选)

PWABuilder(核心):https://www.pwabuilder.com/ 输入网址一键校验 PWA、自动生成 manifest、sw、图标;一键打包安卓、微软商店安装包;VSCode 配套 PWABuilder Studio 插件PWABuilder

PWA Icon Generator:一键批量生成 192/512、苹果 touch、maskable 自适应图标

Manifest 在线编辑器:可视化配置 manifest,实时校验语法

Lighthouse(Chrome 内置):Audit → PWA,一键打分,列出缺失项、安装、离线、HTTPS 问题

✅ 框架配套插件(Vue/React/Vite 项目)

vite-plugin-pwa(Vite + Vue3/React 首选,基于 Workbox,自动生成 sw,不用手写大量缓存)

next-pwa:Next.js PWA 插件

@angular/pwa:Angular 官方 PWA

Workbox:谷歌官方 SW 库,封装预缓存、路由缓存、后台同步,生产项目优先用 Workbox,不手写原生 sw

Workbox 比手写 sw 更稳定,自动处理版本、更新、路由匹配

✅ 调试工具

Chrome DevTools → Application 面板:

Service Workers:查看状态、更新、跳过等待、模拟离线、bypass 缓存

Cache Storage:查看缓存列表、手动删除缓存

Manifest:清单校验,看图标、start_url 是否报错

Lighthouse:PWA 合规检测

✅ 文档参考

MDN PWA:https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps

web.dev PWA 教程:谷歌官方 PWA 指南

PWABuilder 文档:微软官方打包上架指南

五、模板与脚手架资源

原生 HTML 极简 PWA 模板(GitHub):仅 manifest+sw + 离线兜底页

create-pwa-boilerplate:Vite+Vue3/React+TS+Tailwind,内置 vite-plugin-pwa、推送 demo、web api 示例

CMS 改造模板(帝国 CMS、逐浪 CMS):

把 manifest、sw 放在网站根目录

模板 html 头部增加 manifest、theme-color

注意:帝国 CMS 静态页面,sw 缓存策略要适配静态页面更新

离线兜底页模板 offline.html:断网时优雅提示,替代浏览器默认断网页

六、进阶能力:推送通知、版本更新、后台同步

1. 推送 Push 通知(VAPID 密钥)

需要后端,生成 VAPID 公钥私钥;前端订阅,后端推送消息

注意:Safari 推送机制和 Chrome 不同,限制较多;不能页面加载自动弹窗,必须用户点击后申请权限

2. PWA 版本更新(高频踩坑)

原生 SW 默认:新版 install 完成后,等待旧页面全部关闭才接管,用户无感。两种方案:

静默等待(稳妥):用户关闭页面再打开,自动新版

提示更新(推荐):skipWaiting + postMessage 通知页面,弹窗提示 “发现新版本,点击刷新”,避免用户一直停留在旧版缓存

3. Background Sync 后台同步

无网络提交表单,联网后自动同步数据,适合表单、留言、离线填报场景。

七、打包上架(PWABuilder 一键打包)

PWABuilder 支持导出:

Android:APK / AAB(可上架 Google Play)

Windows App:微软商店包

iOS:PWA 打包(苹果 App Store 对 PWA 审核较严,优先直接网页 PWA)

重点:iOS Safari PWA 限制多:推送能力弱、缓存有容量上限、桌面图标刷新机制特殊

八、帝国 CMS / 普通静态网站改造 PWA 步骤(适配你之前的帝国 CMS)

网站开启 HTTPS,配置 SSL 证书

根目录上传 manifest.json、sw.js、图标

全局公共头部模板增加 和 theme-color

全局模板底部增加 SW 注册脚本

配置 sw 缓存策略:静态 css/js/ 图片缓存优先,栏目页、内容页网络优先

Lighthouse 检测,修复报错;测试断网、桌面安装弹窗

注意:帝国 CMS 刷新静态,资源变更后,修改 sw 缓存版本号,触发更新

九、高频踩坑清单(90% 人踩坑点)

❌ 线上 HTTP 域名:SW 注册失败,无法安装 ❌ start_url 路径错误、作用域 scope 不匹配:安装后打开 404 ❌ 图标缺少 maskable 图标:安卓桌面图标裁切异常 ❌ SW 缓存版本号不改:修改页面,用户永远读旧缓存 ❌ 缓存 html 页面,页面更新用户看不到:页面类资源不要无脑 cache-first ❌ 苹果 iOS 坑:Safari 不自动弹出安装提示,需要引导用户「添加到主屏幕」;缓存有上限,长时间不用自动清理 ❌ 资源跨域:跨域图片 / 接口无法被 SW 缓存 ❌ 开发调试忘记勾选 Bypass service worker:一直命中旧缓存,看不到修改效果

十、PWA 验收标准(Lighthouse 全部通过)

✅ HTTPS ✅ 有效的 manifest.json,包含 192+512 图标 ✅ Service Worker 注册成功,离线可以打开核心页面 ✅ 可安装(浏览器地址栏出现安装图标) ✅ 响应式,适配手机 ✅ 主题色、背景色配置正常

相关文章
  • 【推荐收藏】PWA怎么做全套资源大合集
    【推荐收藏】PWA怎么做全套资源大合集

    推荐收藏】PWA 怎么做全套资源大合集一句话总纲:PWA = HTTPS + manifest.json 应用清单 + Service Worker 服务工作线程三大基石;实现桌面安装、离线可用、推送通知、独立窗口运行;本文包含原理、最简代码、缓存策略、工具链、模板、调试、打包上架、踩坑清单,适合原生 ...

  • 【推荐收藏】性能监控全套资源大合集
    【推荐收藏】性能监控全套资源大合集

    性能监控是个跨层级的话题,我把资源按「基础设施 → 应用/链路 → 前端 → 压测」四层整理成合集,文档和视频都配齐了。 一、基础设施与云原生监控(Prometheus + Grafana)这是目前云原生环境的事实标准组合:Prometheus 负责时序数据采集与 PromQL 查询,Grafana 负责可视...

  • 【亲测好用】前端设计模式的最佳解决方案
    【亲测好用】前端设计模式的最佳解决方案

    【亲测好用】前端设计模式的最佳解决方案前端设计模式不是花里胡哨的八股,而是针对页面、组件、状态、请求、渲染、业务解耦这些高频痛点的成熟套路。没有万能模式,核心原则:优先简单,按需选用;避免过度设计。下面按前端最常用场景,整理亲测落地的方...

  • 进阶Vue3与竞品全维度对比,帮你做出最佳选择
    进阶Vue3与竞品全维度对比,帮你做出最佳选择

    2026年Vue3与竞品全维度对比:按场景选,比按喜好选更靠谱2026年前端框架格局已从"两强争霸"演变为"四极共存"——React仍是市场主流,Vue3完成生态闭环,Svelte站稳编译范式,Solid用信号模型挑战心智负担。 更关键的是,所有框架正在围绕编译时优化 + 细粒度响应式 ...

  • 精选ES6实战教程:从零到上线全流程
    精选ES6实战教程:从零到上线全流程

    精选 ES6 实战教程:从零到上线全流程定位:不是单纯罗列语法,以项目驱动,从 ES6 核心特性 → 模块化工程 → 打包构建 → 浏览器兼容 → 上线部署;适合有基础 JS(var、function、DOM),想告别老写法、上手现代前端开发的学习者。前置基础:原生 JavaScript 基础、简单...

  • Stylus优化方案详解:你不知道的高级用法
    Stylus优化方案详解:你不知道的高级用法

    Stylus 优化方案详解:你不知道的高级用法Stylus 很多人只用来写简单嵌套、变量,但是它的哈希、块级 Mixin、条件循环、插值、@extend、词法作用域这些高级特性,用好可以大幅减少冗余 CSS、统一主题、降低维护成本。本文聚焦代码可维护性、编译输出瘦身、工程化...