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的基础上进一步发展
缺点:不可编程,无法清理缓存,几乎没有路由机制

 ​   CACHE MANIFEST  ​  CACHE:  index.html  main.js 5.3 Service Worker介绍 让web应用离线使用的第三次尝试 可编程的Web Worker 像一个位于浏览器与网络之间的客户端代理,可以拦截、处理、响应流经的HTTP请求 配合Cache Storage API, 可以自由的管理HTTP请求文件粒度的缓存 是支撑PWA作为下一代web应用模型的最核心技术 是未来web客户端技术工程化的必争之地,带来离线优先的架构革命 5.4 Service Worker生命周期 01.png 5.5 Service Worker的安装  // sw.js  self.oninstall = (e) => {  e.waitUntil(  caches.open('installation').then(cache => cache.addAll([  './',  './styles.css',  './script.js'  ]))  )  } 5.6 Service Worker使用离线缓存  // sw.js  self.onfetch = (e) => {  const fetched = fetch(e.request)  const cached = caches.match(e.request)  e.respondWith(  fetched.catch(_ => cached)  )  } 5.7 Service Worker的缓存策略 02.png 6、Push Notification Push API的出现则让推送服务具备了向web应用推送消息的能力 Push API不依赖web应用与浏览器UI存活,所以即使是在web应用与浏览器未被用户打开的时候,也可以通过后台进程接受推送消息并调用Notification API向用户发送通知  // sw.js  self.addEventListener('push', event => {  event.waitUntil(  self.registration.showNotification('Hey!')  )  })  self.addEventListener('notificationclick', event => {  event.notification.close()  })  self.addEventListener('notificationclose', event => { 

})
7、PWA与原生APP的差异
03.png
8、PWA对web APP的影响
体验层面上逐渐向原生APP靠拢,离线可用,主屏图标入口,启动动画,基本上可以和原生APP的体验一致
开发模式的变革,Web开发的同时考虑离线模式和体验
App的安装更新机制带来运营方式的变化,url可达,应用间可链接,不仅仅依赖商场分发应用

PWA (Progressive Web App)相关推荐

  1. PWA(Progressive Web App)入门系列:(一)PWA简介

    前言 PWA做为一门Google推出的WEB端的新技术,好处不言而喻,但目前对于相关方面的知识不是很丰富,这里我推出一下这方面的入门教程系列,提供PWA方面学习. 什么是PWA PWA全称Progre ...

  2. PWA(Progressive Web App)入门系列:(三)PWA关键技术Manifest

    前言 前面说过,让Web App能够达到Native App外观体验的主要实现技术就是PWA中的manifest技术,本章会详细说明manifest的实现,及各个参数的具体含义,还将了解如何定义Web ...

  3. PWA(Progressive Web App)入门系列:安装 Web 应用

    前言 在传统的 Web 应用中,通常只能通过在浏览器的地址栏里输入相应的网址才能进行访问,或者把网页地址创建到桌面上通过点击,然后在浏览器里打开. 传统模式下,图标.启动画面.主题色.视图模式.屏幕方 ...

  4. PWA(Progressive Web App)入门系列:Sync 后台同步

    前言 当我们在一些地下停车场,或者在火车上.电梯等无法避免的信号不稳定的场所,使用网站应用处理一些表单操作或者上传数据的操作时,面临的将是网络连接错误的响应,使用户的操作白费. 而此刻 PWA 的 S ...

  5. PWA(Progressive Web App)入门系列:Cache Storage Cache

    前言 目前浏览器的存储机制有很多,如:indexedDB.localStorage.sessionStorage.File System API.applicationCache 等等,那为什么又制定 ...

  6. PWA(Progressive Web App)入门系列:(二)相关准备

    前言 在上一章中,对PWA的相关概念做了基本介绍,了解了PWA的组成及优势.为了能够更快的进入PWA的世界,这一章主要对在PWA开发中,需要注意的问题,运行的环境及调试工具做介绍说明. 浏览器要求 因 ...

  7. PWA(Progressive Web App)入门系列:Push

    前言 很多时候,原生应用会通过一些消息推送来唤起用户的关注,增加驻留率.网页该怎么做呢?有没有类似原生应用的推送机制?推送功能又能玩出什么花样呢? Push API Push API 给与了 Web ...

  8. PWA(Progressive Web App)入门系列:Notification

    前言 在很多场景下,需要一种通知的交互方式来提醒用户,传统方式下可以在页面实现一个 Dialog,或通过修改网页的 title 来实现消息的通知.然而传统的实现存在着一定的不足,在网页最小化的情况下, ...

  9. PWA(Progressive Web App)入门系列:Fetch Request Headers Response Body

    前言 在 WEB 中,对于网络请求一直使用的是 XMLHttpRequest API 来处理,XMLHttpRequest 也很强大,传统的 Ajax 也是基于此 API 的.那么为什么 W3C 标准 ...

最新文章

  1. C++ Primer第18章Vector的再实现及bug修正
  2. 判断五个分数等级划分_2021年迎来新高考,你对“赋分等级”了解吗?选科注意这几点...
  3. 用html制作3d相册_运动眼镜原型可以用全彩3D打印来制作啦!
  4. arthas命令列表查阅文档地址
  5. CoreData 从入门到精通(四)并发操作
  6. Mysql——Innodb和Myisam概念与数据恢复
  7. 继微信支付后 支付宝宣布向银联云闪付开放线上场景
  8. leetcode题解102-翻转二叉树
  9. 《算法图解》——广度优先探索与队列
  10. C++primer 7.4节练习
  11. 服务器保修服务时间查询地址
  12. python cartopy绘制中国区域(包含国界、省界、十段线以及海南诸岛)
  13. w ndows键是哪一个,Win10截图快捷键是哪个?Windows10自带截屏快捷键使用方法大全...
  14. SpringDataJPA学习笔记
  15. html 文本 标签
  16. 电脑卡,电脑卡到不行?原因和解决方法都在这里了!
  17. php微信当面付,微信当面付(c#源码)
  18. Python 读取.msg文件中的附件和内容
  19. 外部接口调用失败重试
  20. 一大早,是什么让技术群发出强人锁男、男上加男、勉为骑男?

热门文章

  1. Docker的常用命令
  2. 程序员适当来点经济头脑
  3. 10.Python存储数据Json模块
  4. 2021年 PAT(乙级)
  5. “有效沟通”-你的团队做到了吗?
  6. codeforces 439A Devu, the Singer and Churu, the Joker
  7. php 生成图片带二维码,并且强制用户下载
  8. 最好的免费WordPress音频播放器插件
  9. 2022电大国家开放大学网上形考任务-企业集团财务管理非免费(非答案)
  10. 【最新】智慧图书馆管理软件应该全面考量各个模块的建设