PWA (Progressive Web App)
1、简介
是一种理念,使用多种技术来增强web app的功能,可以让网站的体验变得更好,能够模拟一些原生的功能,比如:通知推送
Js-to-Native与以PWA为首的纯web应用,将分别从两个方向挤压Hybrid的生存空间,消化当前Hybird架构主要解决的问题
IOS目前还不支持PWA
2、下一代web应用
2.1 优点
webpack、Rollup等打包工具
Babel、PostCSS等转译工具
TypeScript等可转译为Javascript的编程语言
React、Angular、vue等现代web前端框架
同构Javascript应用
2.2 缺点
网页资源下载带来的网络延迟
web应用依赖于浏览器作为入口
没有好的离线使用方案
没有好的消息通知方案
3、PWA的优点及特征
显著提高应用加载速度
web应用可以在离线环境下使用
web应用能够像原生应用一样被添加到主屏幕
web应用能够在未被激活的时候发起推送通知
web应用与操作系统集成能力进一步提高
具有渐进增强,响应式用户界面,不依赖网络链接,类原生应用,持续更新,安全,可发现,再次访问,可安装,可连接性的特征
4、Web App Manifest
4.1 介绍
通过一个清单文件向浏览器暴露web应用的元数据,包括名字、icon的URL等,以备浏览器使用,比如:在添加至主屏幕或推送通知时暴露给操作系统,从而增强web应用与操作系统的集成能力
它就好比PWA的户口本一样,承载着web应用与操作系统集成能力的重任,还将在日后不断发展,以满足web应用高速演化的需要
4.2 manifest.json
{
“short_name”: “Manifest Sample”,
“name”: “Web Application Manifest Sample”,
“icons”: [{
“src”: “launcher-icon-2x.png”,
“sizes”: “96x96”,
“type”: “image/png”
}],
“scope”:“/sample/”, // -> 定义了web应用的浏览作用域,比如作用域外的url会打开浏览器而不会在当前的PWA里继续浏览
“start_url”: “/sample/index.html”, // -> 定义了一个PWA的入口页面
“display”: “standalone”,
“orientation”: “landspace”, // -> 锁定屏幕旋转
“theme_color”: “#000”, // -> 主题色
“background_color”: “#fff” // -> 背景色
}
5、Service Worker
5.1 LocalServer
让web应用离线使用的第一次尝试
Google为了让web应用可以在本地存储数据与离线执行,特意在07年开发了一个浏览器来增强web应用 Goole Gears
在Gears API中,通过向LocalServer模块提交一个缓存文件清单来实现离线支持
5.2 Application Cache
让web应用离线使用的第二次尝试
在LocalServer的基础上进一步发展
缺点:不可编程,无法清理缓存,几乎没有路由机制
})
7、PWA与原生APP的差异
03.png
8、PWA对web APP的影响
体验层面上逐渐向原生APP靠拢,离线可用,主屏图标入口,启动动画,基本上可以和原生APP的体验一致
开发模式的变革,Web开发的同时考虑离线模式和体验
App的安装更新机制带来运营方式的变化,url可达,应用间可链接,不仅仅依赖商场分发应用