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
 
 
饿了么移动版:https://h5.ele.me/msite/#pwa=true
 
国外有Twitter移动版本、Pinterest等产品。随着各大浏览器对PWA技术的支持,未来会出现越来越多的PWA的应用。
 
参考链接
 
 
我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan
 

本文基于 知识共享许可协议 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议发布,欢迎转载,演绎,但是必须保留本文的署名liminjun88(包含链接http://www.cnblogs.com/liminjun88/),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系 

本文转自快乐八哥博客园博客,原文链接http://www.cnblogs.com/liminjun88/p/Progressive-Web-Apps.html如需转载请自行联系原作者


快乐八哥

相关文章
|
2月前
|
缓存 编解码 前端开发
探索PWA(Progressive Web Apps)的无限可能
探索PWA(Progressive Web Apps)的无限可能
41 0
|
移动开发 JavaScript 前端开发
Web APIs (1) - 笔记
严格意义上讲,我们在 JavaScript 阶段学习的知识绝大部分属于 ECMAScript 的知识体系,ECMAScript 简称 ES 它提供了一套语言标准规范,如变量、数据类型、表达式、语句、函数等语法规则都是由 ECMAScript 规定的。浏览器将 ECMAScript 大部分的规范加以实现,并且在此基础上又扩展一些实用的功能,这些被扩展出来的内容我们称为 Web APIs。
92 2
|
JavaScript 前端开发
Web APIs (2) - 笔记
学会通过为DOM注册事件来实现可交互的网页特效。 能够判断函数运行的环境并确字 this 所指代的对象 理解事件的作用,知道应用事件的 3 个步骤 学习会为 DOM 注册事件,实现简单可交互的网页特交。
51 2
|
移动开发 JavaScript 前端开发
Web APIs (6) - 笔记
能够利用正则表达式完成小兔鲜注册页面的表单验证,具备常见的表单验证能力。 正则表达式(Regular Expression)是一种字符串匹配的模式(规则)。 使用场景: 例如验证表单:手机号表单要求用户只能输入11位的数字 (匹配)。 过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等 。
83 1
|
存储 消息中间件 JSON
Web APIs (5) - 笔记
能够利用JS操作浏览器,具备利用本地存储实现学生就业表的能力
73 1
|
JavaScript 前端开发
Web APIs (3) - 笔记
事件流是对事件执行过程的描述,了解事件的执行过程有助于 加深对事件的理解,提升开发实践中对事件运用的灵活度。
52 1
|
JavaScript 算法 API
Web APIs (4) - 笔记
进一步学习 DOM 相关知识,实现可交互的网页特效 能够插入、删除和替换元素节点 能够依据元素节点关系查找节点 掌握 Date 日期对象的使用,动态获取当前计算机的时间。 ECMAScript 中内置了获取系统时间的对象 Date,使用 Date 时与之前学习的内置对象 console 和 Math 不同,它需要借助 new 关键字才能使用。
71 1
|
Web App开发 缓存 JavaScript
什么是 PWA :Progressive Web Apps
谷歌给以 Service Worker API 为核心实现的 web 应用取了个高大上的名字:Progressive Web Apps `(PWA,渐进式增强 WEB 应用)`,并且在其主要产品上进行了深入的实践。那么,符合 PWA 的应用特点是什么?以下为来自谷歌工程师的解答。
251 0
|
JSON API 数据库
odoo Web Controllers 学习总结
odoo Web Controllers 学习总结
141 0
|
Web App开发 缓存 编解码
天人合一物我相融,站点升级渐进式Web应用PWA(Progressive Web Apps)实践
PWA(Progressive web apps,渐进式 Web 应用)使用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序,说白了,PWA可以让我们的站点以原生APP的形式运行,但相比于安装原生APP应用,访问PWA显然更加容易和迅速,还可以通过链接来分享PWA应用。
天人合一物我相融,站点升级渐进式Web应用PWA(Progressive Web Apps)实践
下一篇
无影云桌面