PWA
PWA 即 Progressive Web App ———— 渐进式网络应用
PWA 技术允许用户像 Native 应用一样使用 Web 应用,支持多平台和多设备访问,并且支持在线或离线访问
PWA 技术的核心是 ServiceWorker 技术,并基于 ServiceWorker 技术支持离线访问
PWA 特点
- 可通过 URL 访问并被搜索引擎抓取
- 可以安装到本地(A2HS)
- 可以使用 URL 分享
- 可以在离线状态访问
- 适配老版浏览器访问,并支持在新浏览器中使用更多新特性
- 支持在有新内容时更新
- 能适配各种尺寸屏幕
- 仅通过 HTTPS 提供服务
PWA 创建
页面通过
link标签引入manifest文件文件后缀名可以是 json 或者 webapp、webmanifest
1
<link rel="manifest" href="manifest.json" />
该文件是一个 JSON 的语法,必须指定的项为
name、icons(对于 Chromium 系浏览器start_url、display或display_override也是需要指定的)1
2
3
4
5
6
7
8
9
10{
"name": "My PWA",
"icons": [
{
"src": "icons/512.png",
"type": "image/png",
"sizes": "512x512"
}
]
}name指定应用的名称,接受一个字符串icons指定应用的图标,接受一个数组,数组各项可以指定src、sizes、type项,分别代表图标的 URL、尺寸及 MIME 类型manifest.json文件的详细配置可以参考相关的文档页面中注册 ServiceWorker,且 ServiceWorker 中监听了
fetch事件页面须启用
Secure Context,即使用 HTTPS 协议或者为本地资源
PWA 下载
PWA 下载可以通过浏览器访问对应的网页实现
通常浏览器检测到网页支持下载为 PWA 时,会显示一个默认的“下载为 PWA”的按钮,也可以自定义“下载为 PWA”的按钮
通过监听全局的 beforeinstallprompt 事件获取到 BeforeInstallPromptEvent 事件实例并存储,通常该事件在页面加载时即触发;在必要时刻调用 BeforeInstallPromptEvent.prompt() 方法以使用户确认下载 PWA 应用;下载完成后会在全局触发 appinstalled 事件
PWA 下载亦可以通过应用商店等场景下载
PWA 原理
PWA 实质是仅将应用行为上类似于原生应用,如在桌面显示图标,在应用列表显示,支持卸载等;并不会将应用程序的资源文件主动下载至本地,具体策略由开发者通过 IndexedDB、ServiceWorker、Cache Storage 等开发实施

