前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PWA实战:面向下一代的Progressive Web APP

PWA实战:面向下一代的Progressive Web APP

作者头像
用户1682855
发布于 2018-07-31 01:52:34
发布于 2018-07-31 01:52:34
8850
举报
文章被收录于专栏:前沿技墅前沿技墅

本文作者 Dean Alan Hume

作者、博主、软件开发者,同时也是谷歌开发专家。他写过很多文章,并发表过几十篇演讲,同时还是 Fast ASP.NET Websites(Manning, 2013)和 Building Great Startup Teams(Blurb, 2017)的作者。他还为 A Career On The Web: On the Road to Success(Smashing Magazine, 2015)

一书做出了贡献。作为一名软件开发人员,他对 Web 性能调优充满热情,并且经常在他的博客 deanhume.com 上撰写软件开发相关的文章。他的爱好广泛,包括冲浪、滑雪、拳击和参加三项全能运动。目前,他正在学习啤酒酿造。

想象一下,你有能力去构建一个完全离线的网站,为用户提供几乎瞬间加载的体验,同时它对于不可靠的网络又是安全及富有弹性的。这听起来既不可能,又不可思议。无论你是否相信,绝大部分现代浏览器都已经内置提供了这些功能,只需要释放它们。当你利用这些强大的功能构建网站时,你便已经拥有了所谓的 PWA(Progressive Web App)。

PWA有什么优势

回溯到 1990 年的圣诞节,Tim Berners-Lee 爵士和他在 CERN 的团队创建了使Web 正常工作所需的所有工具。他们创建了 HTTP、HTML 和 WorldWideWeb(全世界第一个网页浏览器)。WorldWideWeb 只能运行具有超链接的简单纯文本组成的网页。事实上,这些第一代的网页仍然在线,并且可以浏览。

从几十年前回到现在,我们所浏览的网页并没有变化。当然,现在我们有了像CSS 和JavaScript 这样的功能,但网页的核心依旧是使用 HTML、HTTP 以及其他一些模块来构建,这些都是 Berners-Lee 和他的团队在多年前所创建的。这些辉煌的构建模块意味着 Web 已经能够以惊人的速度增长。然而,我们用来访问网页的设备数量也在不断增长。无论你的用户是在旅途中还是坐在书桌前,他们都无时无刻不在获取信息。我们对于 Web 的期望从未如此之高。

虽然移动设备变得愈发强大,但移动网络并不是总能满足需求。如果你使用智能能手机,你就会知道移动连接有多么脆弱。2G、3G 或 4G 本身都很不错,但是它们时常会无法连接,或者网速变得很差。如果你的业务是与 Web 相关的,这就是你需要解决的问题。

从历史上来说,原生应用 ( 安装到手机上的 ) 已经能够提供更好的整体用户体验,下载完应用,它便可以立即加载。即使没有网络连接,也并非是完全不可用的,因为设备上已经存储了供客户使用的绝大部分资源。原生应用提供有弹性、吸引人的体验的能力使得它的数量已经呈爆炸式增长。目前,在苹果和谷歌的应用商店中,已经有超过 400 万个原生应用。

同样从历史上来说,Web 无法提供原生应用所具备的这些强大功能,比如离线能力、瞬时加载和更高的可靠性。这也正是 PWA 成为 Web 颠覆者的契机。主要的浏览器厂商一直在努力改进构建 Web 的方式, 并创建了一组新功能以使 Web 开发者能够创建快速、可靠和吸引人的网站。PWA 应该具备以下特点 :

  • 响应式
  • 独立于网络连接
  • 类似原生应用的交互体验
  • 始终保持更新
  • 安全
  • 可发现
  • 可重连
  • 可安装

这是 Web 开发者构建网站传统方式的一种转变。这意味着我们可以开始构建能应对不断变化的网络状况或无网络连接的网站。这还意味着我们可以建立更吸引人的网站来为用户提供一流的浏览体验。

读到这里,你可能会想,这太疯狂了。那些不支持这些新功能的老浏览器怎么办? PWA 最棒的一点就是它真的是渐进式的。如果你构建一个 PWA,即使在一个不支持的老旧浏览器上运行,它仍然可以作为一个普通的网站来运行。驱动 PWA的技术就是这样设计的,只有在支持这些新功能的浏览器中才会增强体验。如果用户的设备支持这些新功能,那么他将获得所有额外的好处和更多的改进功能。无论怎样,这对你和你的用户来说都是双赢。

PWA基础

那么 PWA 到底是由什么组成的呢?我们一直在讨论它们的功能和原理,但真正使某个网站成为 PWA 的到底是什么呢?最简单的 PWA 其实只是普通的网站。普通网站是由 Web 开发者所熟悉和喜欢的技术所创建的,即 HTML、CSS 和 JavaScript。然而, PWA 却更进一步,它为用户提供了增强的体验。我非常喜欢谷歌 Chrome 团队的开发人员 Alex Russell 的描述方式 :这些应用不通过应用商店进行打包和部署,它们只是汲取了所需要的原生应用功能的网站而已。

PWA 会指向一个清单(manifest)文件,其中包含网站相关的信息,包括图标、背景屏幕、颜色和默认方向。(在第 5 章中,你将学习到如何使用清单文件来使网站更加吸引人。)

PWA 使用了叫作 Service Worker 的重要新功能,它可以令你深入网络请求并构建更好的 Web 体验。当你开始用它,还可以将进一步了解它以及它带给浏览器的改进。PWA 还允许你将其“添加”到设备的主屏幕上。它会像原生应用那样,通过单击图标便可让你轻松访问一个 Web 应用 。

PWA 还可以离线工作。使用 Service Worker,可以选择性地缓存部分网站资源以提供离线体验。如果你现在在没有网络连接的情况下浏览网站,那么对于绝大多数网站,你所看到的屏幕应该类似于图 1.1。

图 1.1 如果你迫切需要获取这些信息,离线页面可能会非常令人沮丧

用户无须再面对恐怖的“无网络连接”屏幕了。使用 Service Worker,可以拦截并缓存任何来自网站的网络请求。无论是为移动设备、桌面设备还是平板设备构建网站, 都可以在有网络连接或没有网络连接的情况下控制如何响应请求。

PWA 不仅仅是一组非常棒的新功能,它实际上是构建更好的网站的一种方式。PWA 正在迅速成为一套最佳实践。构建PWA 所采取的步骤将有利于访问你网站的任何人,无论他们选择使用何种设备。

一旦你掌握了开始构建 PWA 所需的基本构建模块,很快就会发现,比较高级的例子并没有看上去那么高级。一旦你熟悉了构建 PWA 的过程,会发现一切都是如此的简单。

构建PWA的业务场景

作为一名开发者,我当然知道当一项新技术或一系列功能出现时,是多么令人兴奋。但为网站发掘并引进最新最好的库或框架的强烈欲望往往会掩盖其为企业带来的价值。无论你是否相信,PWA 能为你的用户带来真正的价值,并使网站更具吸引力、更有弹性,甚至更快。

PWA 最棒的一点是可以渐进增强现有的 Web 应用。本书所讨论的整套技术可以应用于任何现有的网站,甚至是你正在构建的新的 Web 应用。无论你选择何种技术栈来开发网站,PWA 都将与你的解决方案紧密结合在一起,因为它只是简单地基于 HTML、CSS 和 JavaScript 。

既然你对 PWA 已经有了基本的了解,就先暂时停下脚步,想象一下用 PWA 来构建的各种可能性。假设你的在线业务是报纸,人们通过它来了解更多当地的新闻。如果你知道有人经常访问你的网站并浏览多个页面,为什么不提前缓存这些页面,这样他们就可以完全离线地浏览新闻?或者假设你的 Web 应用服务于一个慈善机构,志愿者在这个网络连接不稳定或压根无网络连接的区域进行工作。PWA 的功能将允许你构建一个离线应用,使他们在没有网络连接的现场也能收集信息。一旦他们回到办公室或有网络连接的区域,数据就可以同步到服务器。对于 Web 开发者来说,PWA 是颠覆者,并且我个人对它将带给 Web 的功能感到兴奋不已。

前文提到过可以将 PWA 添加到设备的主屏幕上。一旦添加后,它的图标便会出现在主屏幕上并可以通过单击图标来访问你的网站。

2015 年,印度最大的电商网站 Flipkart 开始构建 Flipkart Lite,它是 Web 和Flipkart 原生应用完美结合的 PWA 。如果你在浏览器中打开 flipkart.com,你会明白为什么这个网站是如此成功。它的用户体验令人印象深刻,网站的速度很快,可以离线工作,并且用起来使人愉悦。通过将它的网站构建成 PWA,Flipkart 能够显示ADD TO HOME SCREEN 操作栏(参见图 1.2)。通过 ADD TO HOME SCREEN 图标到达的用户最终在网站上购买的可能性高达 70%。

图 1.2 ADD TO HOME SCREEN 功能是重新与用户接触的好方法

任何进入苹果或谷歌应用商店的新原生应用就像沙滩上的一粒沙。截至 2016年 6 月,每个应用商店中始终保持将近 200 万个应用。如果你开发了一个原生应用,那么它很容易就被应用商店中的海量应用所掩盖。然而,由于 PWA 是汲取了丰富功能的网站,因此可以通过搜索引擎轻松发现它们。人们可以通过社交媒体链接或浏览网页发现 PWA。构建 PWA 可以让你接触比单独使用原生应用更多的人,因为它们是为任何能够运行浏览器的平台而构建的。

我在一家小型创业公司工作,我知道编写一个可以在多个平台 (iOSAndroid和网站 ) 上运行的应用是多么昂贵。有了 PWA,你只需要一个了解 Web 语言的开发团队即可。它使得招聘更容易,而且肯定便宜得多。这并不是说你不应该构建原生应用,因为不同的用户会有不同的需求,但只要你想,你就可以专注于为网络上的用户营造一个相当好的体验并使他们留下来。

当使用为 Web 构建的应用时,用户可以轻松访问你网站服务的一部分,而无须先下载庞大的安装文件。使用正确的缓存技术的 PWA 可以保存用户数据并立即为用户提供功能。随着世界各地越来越多的用户开始上网,不断为 10 亿规模的新用户构建网站变得格外重要。PWA 通过构建快速、精简的 Web 应用来帮助你实现此目标。

如果你在当今的网络上阅读过一些关于软件开发的文章,一定见过围绕原生应用与 Web 应用的争论。哪个更好?各自的优势与劣势是什么?原生应用本身是非常好的,但事实上 PWA 不仅仅是将原生应用的功能引入 Web 。它解决了企业面临的真正问题,旨在为用户创造一个名副其实的可发现、快速和有吸引力的体验。

————

本文摘自当世唯一相关著作《PWA实战:面向下一代的Progressive Web APP》。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前沿技墅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
手把手教你使用Next.js实现一个PWA应用
PWA(Progressive Web Apps),是一种可以提供类似原生应用体验的网页应用。简单的理解就是,可以让网页像原生应用那样在用户的设备上安装,并且能够实现离线工作、推送通知等功能,不知道你注意过没有,你偶尔会在chrome浏览器中可以看到一个这样的标志:
老码小张
2023/12/11
1.8K0
手把手教你使用Next.js实现一个PWA应用
PWA 技术落地!让你的站点(Web)秒变APP(应用程序)
Web应用方兴未艾,我们已经十分习惯习惯了在电脑上进行以自己的工作,而随着众多功能强大的在线网站,我们的Windows的桌面也不再拥挤着各种快捷方式;不光是PC端,在移动端我们也不再在浩如烟海的应用市场安装各种软件,轻量级的各种小程序取代了他们的位置,无需安装点开即用的方式为大家的工作生活带来了很大便利。
葡萄城控件
2022/05/09
2.7K0
PWA 技术落地!让你的站点(Web)秒变APP(应用程序)
PWA入门:手把手教你制作一个PWA应用
Web前端的同学是否想过学习app开发,以弥补自己移动端能力的不足?但在面对一众的选择时很多同学略感迷茫,是学习ios还是android开发?是学习原生开发、混合开发(比如:Ionic),还是使用react native或者flutter这样的跨平台框架?而app开发的学习周期长、学习成本高也让一部分人望而却步。得益于前端技术的飞速发展、浏览器性能的不断提高,使用网页技术开发出接近原生体验的应用得以变为现实,PWA就在这样的背景下应运而生。可以用自己熟悉的HTML、CSS、Javascript开发出媲美原生app的网站,不仅拥有接近原生app的流畅程度,并且具备一些原生app才有的特性,比如:a. 可以在主屏上安装应用图标,b. 离线状态下访问,c. 获取消息通知,等等。。PWA的出现让大家看到了希望!
MudOnTire
2019/07/02
4.2K0
PWA入门:手把手教你制作一个PWA应用
渐进式Web应用(PWA)入门教程(上)
最近关于渐进式Web应用有好多讨论,有一些人还在质疑渐进式Web应用是否就是移动端未来。 但在这篇文章中我并不会将渐进式APP和原生的APP进行比较,但有一点是可以肯定的,这两种APP的目标都是使用户体验变得更好。 移动端Web应用有很多优秀的概念让人应接不暇,但好在编写一个渐进式Web应用不是一个很困难的事情。在这篇文章里将向你介绍如何把一个普通的网站转换成渐进式Web应用。你可以按照这篇文章一步一步地做,做完之后你的网站将可以实现离线访问,并且可以在桌面上创建该网站的图标。那么下面即将开始入门教程。 什
葡萄城控件
2018/05/28
1K0
PWA 渐进式Web应用程序
PWA是Progressive Web App的简称,是谷歌提出的新型Web技术,并由W3C及谷歌来推广这项技术,其主要目的是为了提升用户对网站原生使用体验,同时又能节省对网站的开启速度。
Meng小羽
2019/12/24
1.2K0
下一代Web开发技术-Progressive Web App介绍
PC和Mobile开发技术演进 PC方向,从客户端到富客户端,到现在广泛使用的Web。 移动方向,目前主要还是原生应用和Mobile Web,PWA相关技术是未来发展方向。 PWA的概念 Progressive Web App (中文翻译为:渐进式Web应用)带来的体验将网络应用的优点与原生应用的优点相结合。用户在浏览器中第一次访问时就能体会到它们的好处,因为不需要进行任何安装。在用户随着时间的推移增进与应用的关系后,其功能会变得越来越强大。它即使在不可靠网络上也能快速加载、能够发送相关推送通知、具
企鹅号小编
2018/01/30
1.5K0
下一代Web开发技术-Progressive Web App介绍
为什么PWA应用在国内没有发展起来
发现一个现象,中国互联网的土壤上,小程序发展势头非常猛,但是大家开发的小程序被微信、支付宝、抖音等超级App围在了各自构建的“围墙花园”里。
Onegun
2025/04/03
1940
为什么PWA应用在国内没有发展起来
更真、更强、更快的Web应用-Progressive Web Apps
0.Progressive Web Apps 2016年Progressive Web Apps(文后简称PWA)风劲较大,本文作者详细梳理了PWA现状,希望能帮助读者更深入了解PWA,主要内容如下: PWA定义:描述一下PWA的缘起与使命。 PWA技术:说明完成PWA开发需要使用哪些技术,主要介绍Web App Manifest(使web更像native)、Service Workers(增强web能力)、Application Shell(提升web效率)等使用场景和基本原理。 PWA优势:通过相关
yuanyi928
2018/04/02
1.8K0
更真、更强、更快的Web应用-Progressive Web Apps
Progressive Web Apps入门
PC和Mobile开发技术演进 PC方向,从客户端到富客户端,到现在广泛使用的Web。 移动方向,目前主要还是原生应用和Mobile Web,PWA相关技术是未来发展方向。 PWA的概念 Progressive Web App (中文翻译为:渐进式Web应用)带来的体验将网络应用的优点与原生应用的优点相结合。用户在浏览器中第一次访问时就能体会到它们的好处,因为不需要进行任何安装。在用户随着时间的推移增进与应用的关系后,其功能会变得越来越强大。它即使在不可靠网络上也能快速加载、能够发送相关推送通知
八哥
2018/01/18
1.8K0
Progressive Web Apps入门
穿上App外衣,保持Web灵魂——PWA温故
早在2015年,设计师弗朗西斯·贝里曼和Google Chrome的工程师亚历克斯·罗素提出“PWA(渐进式网络应用程序)”概念,将网络之长与应用之长相结合,其核心目标就是提升 Web App 的性能,改善 Web App以媲美Native的流畅体验。
半吊子全栈工匠
2023/09/02
2.2K0
穿上App外衣,保持Web灵魂——PWA温故
在项目中使用Service Worker 与 PWA
Web Worker 是浏览器内置的线程,用于执行非阻塞事件循环的 JavaScript 代码。由于 JavaScript 是单线程语言,一次只能处理一个任务。复杂任务的出现可能导致主线程被阻塞,严重影响用户体验。Web Worker 的作用是允许主线程创建 worker 线程,使它们可以同时运行。Worker 线程主要负责处理复杂的计算任务,然后将结果返回给主线程。简而言之,worker 线程执行复杂计算,同时保持页面(主线程)的流畅性,不会造成阻塞。
linwu
2023/10/16
6670
在项目中使用Service Worker 与 PWA
PWA+小程序,会碰撞出怎样的火花
PWA代表“渐进式网络应用”(Progressive Web Application)。它是一种结合了网页和移动应用程序功能的技术概念。PWA旨在提供类似于原生应用程序的用户体验,包括离线访问、推送通知、后台同步等功能,同时又具有网页的优势,如跨平台、无需下载安装等。
Lydiasq
2023/06/07
5440
PWA+小程序,会碰撞出怎样的火花
现代应用开发模式:PWA vs 小程序
还记得在几年前,渐进式Web应用程序(PWA)被誉为下一件大事,然而它并没有获得最初头条新闻所预测的牵引力。事实上,谷歌和微软是PWA运动的主要推动力, 但迹象表明他们不会很快放弃它。
Onegun
2023/05/24
1.3K0
现代应用开发模式:PWA vs 小程序
PWA - 令人惊奇的web用户体验新方法
install 事件回调中有两个方法: * event.waitUntil():传入一个 Promise 为参数,等到该 Promise 为 resolve 状态为止。 * self.skipWaiting():self 是当前 context 的 global 变量,执行该方法表示强制当前处在 waiting 状态的 Service Worker 进入 activate 状态。 * 安装后( installed ):Service Worker 已经完成了安装,并且等待其他的 Service Worker 线程被关闭。 * 激活( activating ):在这个状态下没有被其他的 Service Worker 控制的客户端,允许当前的 worker 完成安装,并且清除了其他的 worker 以及关联缓存的旧缓存资源,等待新的 Service Worker 线程被激活。
江米小枣
2020/06/16
2.8K0
PWA - 令人惊奇的web用户体验新方法
苹果拒绝支持PWA的行为对Web贻害无穷!
渐进式Web应用(Progressive Web Applications,简称 PWAs)是迄今为止在Web开发中最令人兴奋的创新技术之一。PWA 使你可以用 JavaScript 来创建一个“Service Worker”,它为你提供与原生应用相关联的各种功能,例如推送通知,离线支持和应用的加载屏幕 —— 这一切可都是基于Web的!这真是极好的。
疯狂的技术宅
2019/03/28
2.1K0
苹果拒绝支持PWA的行为对Web贻害无穷!
PWA 那些事儿
企鹅号小编
2017/12/28
2K0
PWA 那些事儿
PWA 对比原生应用:谁更胜一筹?
自诞生以来,渐进式 Web 应用( PWA )已经取得了可观的成就。PWA 的加载速度比其他应用更快,并且它们的体积也不大。你知道优步的 PWA 在 2G 网络上只需 3 秒钟即可加载完毕吗?下面是其他一些例子,显示了 PWA 的强大能力:
凡泰极客
2020/03/09
1.3K0
PWA 对比原生应用:谁更胜一筹?
PWA渐进式增强WEB应用
PWA是Progressive Web App的英文缩写,是渐进式增强WEB应用, 是Google新开发的web技术。目的就是在移动端利用提供的标准化框架,在网页应用中实现和Native app原生应用相近的用户体验的渐进式网页应用。它的安全,性能,用户体验的确明显领先于其他互联网载体,各大前端厂商争先恐后进行涉足,布局。
ytkah
2020/05/18
1.4K0
PWA渐进式增强WEB应用
开发一个渐进式Web应用程序(PWA)前都需要了解什么?
自苹果推出了iPhone应用商店以来,App成为了我们生活中不可或缺的一部分,而对于实体业务也是如此,现在各行业都在推出自己的App,但有没有人想过这样一种场景,如果自己的潜在客户还没有安装你的App亦或是即便安装但因为客户的手机存储空间紧张而卸载掉了你的App?那有没有使App更轻量,更易安装的技术实现呢?答案是“有的”。
葡萄城控件
2020/09/14
1.8K0
开发一个渐进式Web应用程序(PWA)前都需要了解什么?
混合APP上线时需要的问题
通过关注这些关键点,可以确保混合APP在上线后能够提供良好的用户体验,同时保持高性能和稳定性。
数字孪生开发者
2025/03/22
1010
混合APP上线时需要的问题
相关推荐
手把手教你使用Next.js实现一个PWA应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档