Progressive Web Apps入门

PC和Mobile开发技术演进
PC方向,从客户端到富客户端,到现在广泛使用的Web。
移动方向,目前主要还是原生应用和Mobile Web,PWA相关技术是未来发展方向。
PWA的概念
Progressive Web App (中文翻译为:渐进式Web应用)带来的体验将网络应用的优点与原生应用的优点相结合。用户在浏览器中第一次访问时就能体会到它们的好处,因为不需要进行任何安装。在用户随着时间的推移增进与应用的关系后,其功能会变得越来越强大。它即使在不可靠网络上也能快速加载、能够发送相关推送通知、具有桌面图标,并且可采用顶层全屏体验的方式加载。
PWA的特点
  • 渐进式 - 适用于选用任何浏览器的所有用户,因为它是以渐进式增强作为核心宗旨来开发的。
  • 自适应 - 适合任何机型:桌面设备、移动设备、平板电脑或任何未来设备。
  • 连接无关性 - 能够借助于服务工作线程在离线或低质量网络状况下工作。
  • 类似应用 - 由于是在 App Shell 模型基础上开发,因此具有应用风格的交互和导航,给用户以应用般的熟悉感。
  • 持续更新 - 在服务工作线程更新进程的作用下时刻保持最新状态。
  • 安全 - 通过 HTTPS 提供,以防止窥探和确保内容不被篡改。
  • 可发现 - W3C 清单和服务工作线程注册作用域能够让搜索引擎找到它们,从而将其识别为“应用”。
  • 可再互动 - 通过推送通知之类的功能简化了再互动。
  • 可安装 - 用户可免去使用应用商店的麻烦,直接将对其最有用的应用“保留”在主屏幕上。
  • 可链接 - 可通过网址轻松分享,无需复杂的安装。
PWA vs Native App
Native App:依赖运行的平台操作系统,比如Android或iOS,需要将应用提交到应用商店,比如Apple App Store或者Google Play Store,国内各大应用商店等。
PWA:不关系平台操作系统,运行在浏览器中,使用标准的Web开发技术,无需提交到应用商店进行审核,发布即用。
PWA vs Web App
Web App:使用标准的Web技术,但是在处理离线,推送上欠缺,不能生成桌面图标等。
PWA:使用标准的Web开发技术,可以支持离线可用,通过service worker进行更新和缓存,采用App shell模型基础开发,界面和交互类似应用。支持推送,未来还支持操作设备(调用摄像头、读取陀螺仪等)。
PWA关键技术
Manifest
网络应用清单是一个 JSON 文件,您(即开发者)可以利用它控制在用户想要看到应用的区域(例如移动设备主屏幕)中如何向用户显示网络应用或网站,指示用户可以启动哪些功能,以及定义其在启动时的外观。网络应用清单提供了将网站书签保存到设备主屏幕的功能。一个PWA的manifest.json示例:
{ 'name': 'HackerWeb', 'short_name': 'HackerWeb', 'start_url': '.', 'display': 'standalone', 'background_color': '#fff', 'description': 'A simply readable Hacker News app.', 'icons': [{ 'src': 'images/touch/homescreen48.png', 'sizes': '48x48', 'type': 'image/png' }, { 'src': 'images/touch/homescreen72.png', 'sizes': '72x72', 'type': 'image/png' }, { 'src': 'images/touch/homescreen96.png', 'sizes': '96x96', 'type': 'image/png' }, { 'src': 'images/touch/homescreen144.png', 'sizes': '144x144', 'type': 'image/png' }, { 'src': 'images/touch/homescreen168.png', 'sizes': '168x168', 'type': 'image/png' }, { 'src': 'images/touch/homescreen192.png', 'sizes': '192x192', 'type': 'image/png' }], 'related_applications': [{ 'platform': 'web' }, { 'platform': 'play', 'url': 'https://play.google.com/store/apps/details?id=cheeaun.hackerweb' }]}
Service Worker
Service Worker 是一段脚本,与 Web Worker 一样,也是在后台运行。作为一个独立的线程,运行环境与普通脚本不同,所以不能直接参与 Web 交互行为。Native App 可以做到离线使用、消息推送、后台自动更新,Service Worker 的出现是正是为了使得 Web App 也可以具有类似的能力。页面注入service worker代码示例:
if (navigator.serviceWorker) {
  navigator.serviceWorker.register('service-worker.js')
  .then(function(registration) {
    console.log('service worker 注册成功');
  }).catch(function (err) {
    console.log('servcie worker 注册失败');
  });}
Responsive Web Design
RWD是一种网页设计的技术做法,该设计可使网站在不同的设备(从桌面电脑显示器到移动电话或其他移动产品设备)上浏览时对应不同分辨率皆有适合的呈现,减少用户进行缩放、平移和滚动等操作行为。
第4-6点不在这里展开,刚兴趣的可以查找相应资料进行学习。
浏览器对PWA的支持
越来越多的浏览器支持PWA的技术,特别是移动浏览器,比如Chrome,Firefox,UC移动浏览器等。
PWA案例欣赏
国内的有新浪微博Lite版本:https://m.weibo.cn/beta
国外有Twitter移动版本、Pinterest等产品。随着各大浏览器对PWA技术的支持,未来会出现越来越多的PWA的应用。
参考链接
我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan
(0)

相关推荐

  • 如何创建一个Progressive Web Apps应用程序

    这篇文章主要介绍怎么创建一个PWA程序.首先听说bootstrap4非常好,那我们就把bootstarp4项目变成我们的PWA程序. 顺便推荐一个node插件live-server,用来当做本地服务器 ...

  • 【组队学习】【25期】Web开发入门教程

    Web开发入门教程 开源内容: https://github.com/datawhalechina/whale-web 基本信息 贡献人员:张梁.王晓亮.何锋丽.张少波.谢文昕 学习周期:16天 学习 ...

  • Web应用程序有哪些优点?web网络安全入门

    Web应用程序越来越流行的原因显而易见.若干技术因素已经与主要的商业动机相结合,从而引发了因特网使用方式上的重大变革.随着学习网络安全技术的人们越来越多,了解Web应用程序的人们也多了,那么Web应用 ...

  • 什么是 Immutable Web Apps

    官网 不可变 Web 应用程序是一种与框架无关的方法,用于构建和部署静态单页应用程序: 最大限度地降低实时发布的风险和复杂性. 简化和最大化缓存. 最大限度地减少对服务器和运行时环境管理的需求. 通过 ...

  • SAP Spartacus - Progressive Web Applications,渐进式 Web 应用程序

    原文 Spartacus 是一种基于 Angular 的 JavaScript 解决方案,主要在浏览器中运行.它是渐进式 Web 应用程序 (PWA) 之一,反过来又代表了响应式网站和应用程序的共生关 ...

  • 2020年Web前端入门的自学路线

    本文的最新内容,更新于2020-01-09.大家完全不用担心这篇文章会过时,因为随着 前端技术 的更新,本文也会随之更新. 本文的最新内容也会在GitHub上实时更新.欢迎在GitHub上关注我,一起 ...

  • JSON Web Token 入门教程

    JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法. 一.跨域认证的问题 互联网服务离不开用户认证.一般流程是下面这样. 1.用户向服务器发送用户名和密 ...

  • web.py入门01——python安装

    环境:windows10 相关软件:python3.8.6.Sublime text.mysql.web.py和一些python库. python安装 python官网: https://www.py ...

  • Java Web 开发入门全套教程(Vue Spring Boot)

    专栏目录(持续更新) 第一部分 Vue + Spring Boot 项目实战(一):项目简介 Vue + Spring Boot 项目实战(二):搭建 Vue.js 项目 Vue + Spring B ...