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://codelabs.developers.google.com/codelabs/your-first-pwapp/#0

https://segmentfault.com/a/1190000008880637

https://zhuanlan.zhihu.com/p/25800461

https://developer.mozilla.org/zh-CN/Apps/Progressive

https://openweb.baidu.com/pwa-future/

https://lavas.baidu.com/doc

https://zhuanlan.zhihu.com/p/25524382

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

原文地址:https://www.cnblogs.com/mouseleo/p/10961581.html

时间: 2024-12-12 12:52:59

Progressive Web Apps入门的相关文章

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

前言 PWA做为一门Google推出的WEB端的新技术,好处不言而喻,但目前对于相关方面的知识不是很丰富,这里我推出一下这方面的入门教程系列,提供PWA方面学习. 什么是PWA PWA全称Progressive Web App,直译是渐进式WEB应用,是 Google 在 2015 年提出,2016年6月才推广的项目.是结合了一系列现代Web技术的组合,在网页应用中实现和原生应用相近的用户体验. 所谓的P(Progressive)这里有两层含义,一方面是渐进增强,让WEB APP的体验和功能能够

Progressive Web Apps基本说明

我们将要做什么? 你将会学到 如何使用 "app shell" 的方法来设计和构建应用程序. 如何让你的应用程序能够离线工作. 如何存储数据以在离线时使用. 你需要 Chrome 52 或以上(浏览器建议使用正宗google Chrome,经测试chrome内核的百度浏览器无法安装下面的web server) Web Server for Chrome 或其他的网络服务器. 示例代码 代码编辑器 HTML,CSS 和 JavaScript 的基本知识 这份引导指南的重点是 Progre

PWA(Progressive Web App)入门系列:(一)PWA简单介绍

前言 PWA做为一门Google推出的WEB端的新技术,长处不言而喻.但眼下对于相关方面的知识不是非常丰富.这里我推出一下这方面的新手教程系列.提供PWA方面学习. 什么是PWA PWA全称Progressive Web App,直译是渐进式WEB应用,是 Google 在 2015 年提出,2016年6月才推广的项目.是结合了一系列现代Web技术的组合.在网页应用中实现和原生应用相近的用户体验. 所谓的P(Progressive)这里有两层含义,一方面是渐进增强,让WEB APP的体验和功能能

[Firebase + PWA] Keynote: Progressive Web Apps on Firebase

Link : Video. 1. Firebase Auth: provides simple login with Github, Google, Facebook, Twittr. Link 2. Manifest: 3. Generate Mainfest and icons: Link 4. Read-only offline cache: 5. What Web can do Today?: Link Github: link https://firebase.google.com/d

[io PWA] Great libraries and tools for great Progressive Web Apps

sw-toolbox: Github It provides a cononical implementation of all the runtime caching strategies that you need for you dynamice content. sw-precache: Github It takes care of caching and maintaing all the resources in your app shell sw-helpers: Github

[PWA] Keynote: Progressive Web Apps across all frameworks

PWA: Add to home screen Angular Universal Server side rendering: for achieving better proference on init loading Angular 2 CLI ng new myapp --mobile sw-precache: with webpack: sw-toolbox: run time caching angular2 material design: *shellRender and *s

你的首个 Progressive Web App

什么是 Progressive Web App? Progressive Web Apps 是: 渐进增强 - 能够让每一位用户使用,无论用户使用什么浏览器,因为它是始终以渐进增强为原则. 响应式用户界面 - 适应任何环境:桌面电脑,智能手机,笔记本电脑,或者其他设备. 不依赖网络连接 - 通过 service workers 可以在离线或者网速极差的环境下工作. 类原生应用 - 有像原生应用般的交互和导航给用户原生应用般的体验,因为它是建立在 app shell model 上的. 持续更新 

Progressive Web App

下一代 Web 应用? 近年来,Web 应用在整个软件与互联网行业承载的责任越来越重,软件复杂度和维护成本越来越高,Web 技术,尤其是 Web 客户端技术,迎来了爆发式的发展. 包括但不限于基于 Node.js 的前端工程化方案:诸如 Webpack.Rollup 这样的打包工具:Babel.PostCSS 这样的转译工具:TypeScript.Elm 这样转译至 JavaScript 的编程语言:React.Angular.Vue 这样面向现代 Web 应用需求的前端框架及其生态,也涌现出了

Progressive Web App(PWA)介绍

Progressive Web App(PWA)背景介绍 很多人似乎都认为Web,应用永远不会与本机竞争,移动应用程序的可靠性速度和用户参与,很难建立一个他们的商业案例. 你知道吗?你知道他们曾经是对的,但有两件事情发生了变化. 首先,事实证明,大多数人在购买手机时购买了大部分应用程序,或者不久之后大多数人安装了一些常见应用程序并只用了一天,这使得开发人员难以参与竞争,但人们仍然继续使用网络和 一些新技术,让你可以从中提供客户所需的关键功能.我们称它为渐进式网络应用程序(Progressive