概念
PWA(Progressive Web Apps,渐进式 Web 应用) 到底是什么?
简单说就是无需下载安装即可使用的应用,意在将 Web 网页服务打包提供类似原生安装应用的使用体验。
一个 PWA 应用首先是一个网页, 可以通过 Web 技术编写出一个网页应用. 随后添加上 App Manifest 和 Service Worker 来实现 PWA 的安装和离线等功能。
优点:
- 可以添加至主屏幕,点击主屏幕图标可以实现启动动画以及隐藏地址栏
- 实现离线缓存功能,即使用户手机没有网络,依然可以使用一些离线功能
- 实现了消息推送
运行机制
ServiceWorker是运行在单独线程,在浏览器进程退出之后,ServiceWorker线程也会关闭。再次打开浏览器之后,可以通过Wake Up机制唤醒ServiceWorker线程。
PWA网页和浏览器生命周期一致,浏览器进程杀掉网页也销毁了。ServiceWorker进程在网页关闭后,如果内存足够,也不会被销毁。
与小程序的对比
两者主要都是基于Web技术,都是为了用户体验的优化,只不过实现原理不太相同:
小程序类似传统的Hybrid架构,对渲染性能要求较高的组件,通过Native 组件来实现,以弥补传统Web页面性能上的不足。另外传统Web无法访问的本地能力,需要通过JSSDK来实现。而PWA是Web能力的增强,通过提供更多的接口和规范可以让Web应用更接近Native应用。