当前位置:网站首页>PWA (Progressive Web App)
PWA (Progressive Web App)
2022-07-05 10:21:00 【码小龙.】
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可达,应用间可链接,不仅仅依赖商场分发应用
边栏推荐
- 【观察】跨境电商“独立站”模式崛起,如何抓住下一个红利爆发时代?
- Learning II of workmanager
- Interview: how does the list duplicate according to the attributes of the object?
- 2022年危险化学品经营单位主要负责人特种作业证考试题库及答案
- [可能没有默认的字体]Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename……
- uniapp
- Constrained layout flow
- Interview: is bitmap pixel memory allocated in heap memory or native
- flex4 和 flex3 combox 下拉框长度的解决办法
- uniapp + uniCloud+unipay 实现微信小程序支付功能
猜你喜欢
2022年危险化学品经营单位主要负责人特种作业证考试题库及答案
"Everyday Mathematics" serial 58: February 27
手机厂商“互卷”之年:“机海战术”失灵,“慢节奏”打法崛起
C语言实现QQ聊天室小项目 [完整源码]
Solution of ellipsis when pytorch outputs tensor (output tensor completely)
2022年流动式起重机司机考试题库及模拟考试
Events and bubbles in the applet of "wechat applet - Basics"
【观察】跨境电商“独立站”模式崛起,如何抓住下一个红利爆发时代?
[observation] with the rise of the "independent station" model of cross-border e-commerce, how to seize the next dividend explosion era?
【黑马早报】罗永浩回应调侃东方甄选;董卿丈夫密春雷被执行超7亿;吉利正式收购魅族;华为发布问界M7;豆瓣为周杰伦专辑提前开分道歉...
随机推荐
学习笔记4--高精度地图关键技术(下)
ModuleNotFoundError: No module named ‘scrapy‘ 终极解决方式
> Could not create task ‘:app:MyTest. main()‘. > SourceSet with name ‘main‘ not found. Problem repair
SqlServer定时备份数据库和定时杀死数据库死锁解决
“军备竞赛”时期的对比学习
小程序中自定义行内左滑按钮,类似于qq和wx消息界面那种
2022年危险化学品经营单位主要负责人特种作业证考试题库及答案
LSTM应用于MNIST数据集分类(与CNN做对比)
Implementation of wechat applet bottom loading and pull-down refresh
How can non-technical departments participate in Devops?
数据库中的范式:第一范式,第二范式,第三范式
GO项目实战 — Gorm格式化时间字段
"Everyday Mathematics" serial 58: February 27
学习笔记5--高精地图解决方案
【tcp】服务器上tcp连接状态json形式输出
Timed disappearance pop-up
2022年流动式起重机司机考试题库及模拟考试
QT implements JSON parsing
What are the top ten securities companies? Is it safe to open an account online?
风控模型启用前的最后一道工序,80%的童鞋在这都踩坑