Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
T族(技术研发)通道晋升答辩之完全解析
点击上方蓝字,发现更多精彩 导语 晋升答辩之于职业生涯,如同吃饭之于人生,只要我们还活着就得进行下去,不管是为了前途,还是为了图钱。既然不得不做,那就应该让过程尽可能轻松愉快一点。为此,本文将结合自己与身边同学的相关经历,对通道答辩的全流程给出个人的所思所想,以供参考,若对大家有所裨益,则不胜荣幸。 前言:阅读提示 晋升答辩,是一个关于技术的非技术话题,本文将按照答辩活动的开展顺序,对答辩前,答辩中,答辩后的各环节展开逐层剖析,以期改善大家的阅读体验,并尽力提供一个贴近实操的行动指南(个人建议)。 主要
腾讯VTeam技术团队
2021/02/09
3.8K0
技术大咖分享:如何评价一段代码?
经常有人微信问老九君,什么样的代码才算是好代码。这个问题其实见仁见智,业内也没有统一的标准可以使用。我仔细梳理了一下自己评价代码的方法,总结了五个评价指标。 规模 执行效率 占用空间 可读性 扩展性
老九君
2018/03/06
8630
技术大咖分享:如何评价一段代码?
10分钟搞定!AI表情包自由,白嫖GPT-4o,让你在群里横着走!
嘿!还在用那些糊掉渣、传了N代的“祖传”表情包?朋友,你out辣!现在AI画图都卷成麻花了,尤其是那个GPT-4o,简直是表情包界的“外挂”,图像的一致性稳得一批不说,还能直接吐透明背景的图,简直是表情包界的“天选之子”!
LeonAlgo
2025/04/30
2730
10分钟搞定!AI表情包自由,白嫖GPT-4o,让你在群里横着走!
还记得当年踏上信安之路的初衷吗
一年前在信安之路的交流群里做了一个活动:在我们这个信息安全的圈子里,渗透测试仅仅是安全中的一个很小的分支,虽说这个圈子的缺口很大,但是为什么一直补不上这个缺口呢?
信安之路
2019/03/12
2.4K0
面试|2021金三银四铜五安卓菜鸟被锤历程出炉,所有碰壁的心酸都是技术不牢固带来的
对于跳槽,个人其实相对比较抵触,相比来来回回跳,内心更趋向于随着公司的成长而成长...
Android技术干货分享
2021/06/23
6950
面试|2021金三银四铜五安卓菜鸟被锤历程出炉,所有碰壁的心酸都是技术不牢固带来的
0CTF h4x0rs.club1/2 复现
周末肛了一下0ctf,发现自己依旧那么菜。一道题也没解出来,成功的再一次拖了队伍后退。 今天发现国外大佬们已经开始放wp了。于是自己学习一波,复现一下。 先吐槽一波 h4x0rs.club1 Flag is biography of the administrator. There are more than one way to get this flag. h4x0rs.club-https://h4x0rs.club/game/ backend_www got backup at /var/www/h
安恒网络空间安全讲武堂
2018/04/18
1.6K0
0CTF h4x0rs.club1/2 复现
夸克“凶猛”:一场手机镜头背后的狂野冒险
浅友们好~我是史中,我的日常生活是开撩五湖四海的科技大牛,我会尝试各种姿势,把他们的无边脑洞和温情故事讲给你听。如果你想和我做朋友,不妨加微信(shizhongmax)。
浅黑科技
2022/11/11
1.8K0
夸克“凶猛”:一场手机镜头背后的狂野冒险
如何写出让人抓狂的代码?
大家看到这个标题,第一印象觉得这篇文章可能是一篇水文。但我很负责的告诉你,它是一篇有很多干货的技术文。
苏三说技术
2022/08/25
3640
如何写出让人抓狂的代码?
2018:春来秋去,往事知何处(上)
去年 12 月的某个夜晚,在部署服务的无聊时光里,我突然想翻看自己一年来的朋友圈,看看有哪些有趣的事情。结果那夜一发不可收拾,扫了半年的朋友圈,一直读到凌晨三点半还意犹未尽(毕竟五点半就要起床了,觉还是要象征性地睡一下)。我把一些有意思的内容摘录了下来,没事的时候,就补两句评语,就像在跟去年的自己对话 —— 这可能也算程序员级宅男的恶趣味了。
tyrchen
2019/03/07
1.4K0
2018:春来秋去,往事知何处(上)
广东程序员在加利福尼亚,看国外程序员生活
作者介绍:Ryan Chen(英文名)。目前在美国圣地亚哥城工作,就职于全球着名IT公司.Ryan Chen在美国工作生活多年,本文是他对在美国当程序员的一些观察和感受。
一墨编程学习
2018/09/14
1.1K0
广东程序员在加利福尼亚,看国外程序员生活
腾讯数据库的三场战役
电影《头脑特工队》的封面上,有五个颜色各异的小精灵。他们在主人公小女孩的脑海里上班儿,专门负责整理她的记忆。 小女孩儿的每段新经历,都会被涂上“喜怒忧恐厌”这五种颜色之一,然后封装成水晶球,存入记忆库房。不过故事里的小女孩有点丧,当时她刚刚转学,每天都生活在被陌生环境支配的恐惧中。为了让她的记忆里多一些欢乐,这几个小精灵每天上班996,差点累进ICU。 当年,中哥看完整部电影热泪盈眶——这简直是一部绝好的。。。。数据库科普电影啊!! 啥是数据库?能吃吗好吃吗? 其实数据库并不神秘,就是把怕丢的
腾讯云数据库 TencentDB
2020/04/26
1.5K0
面试|2021 菜鸟金三银四铜五 Android 被锤历程出炉...
对于跳槽,个人其实相对比较抵触,相比来来回回跳,内心更趋向于随着公司的成长而成长...
贺biubiu
2021/09/07
9870
从家里到阿里,学弟求职的一年
大家好,我是鱼皮,今天给大家分享一位学弟小六的 超完整 学习和求职经验,不需要我太多的介绍,他的故事和干货都在文章里了,希望对大家有帮助。
程序员鱼皮
2021/07/24
6860
【Xbox one S】开箱&开机&初入坑心得
身为一个资lao深nian单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿势。80后的机友大概都有小时候跟小伙伴坐地上双打小霸王的愉快记忆,儿时的记忆总是那么深刻,任凭岁月和社会如何磨灭,总有些感觉想要找回,所以很难说现在淘来一台游戏机有几分是为了当下的娱乐,几分是为了找到当年的感觉。当然了,今天的PC也完全可以让你坐沙发拿手柄看电视甚至玩着相同的游戏,但就凭它叫游戏机,给我的感觉就不同,大概因为电脑这个东西毕竟还是带了一定的工作色彩。至于为什么是Xbox而不是PS,是因为后者手柄丑~索尼大法好,其实就是先挑个听起来相对熟悉点的坑跳吧。
AhDung
2018/09/13
12.8K1
【Xbox one S】开箱&开机&初入坑心得
面试 Notes|2021 年秋季 Android 求职记。。。
说来也怪,从入职的第一天就觉得很不舒服,然后慢慢产生离开的念头,随后转变思想,回去打算按照步骤继续学习,避免下次求职尴尬。奈何。
贺biubiu
2021/11/16
2.1K0
面试 Notes|2021 年秋季 Android 求职记。。。
人工智障 2 : 你看到的AI与智能无关
两年前,写了一篇文章《为什么现在的人工智能助理都像人工智障》,当时主要是怼“智能助理们”。这次呢则是表达 “我不是针对谁,只是现在所有的深度学习都搞不定对话AI”,以及“你看都这样了,那该怎么做AI产品”。
Fayson
2019/11/28
1.3K0
相亲对象告诉你他的相亲史_时间让我看懂一切
注:本文,来自csdn论坛的觉的楼主写的不错,所以就引用过啦了,别介意哦,http://topic.csdn.net/u/20100624/16/80f263ca-b05f-456f-bf5f-9d87dd78a6f9.html,作者:NewJacket (这个真不是马甲)
全栈程序员站长
2022/11/08
3.3K0
近10年“女性向”游戏深度解读
导语|  本文的创作和思考定位不是单纯的女性向游戏,而是尝试提供一个更全面的视角——广义女性向游戏构建。笔者将在本文中尝试对近十年流行的女性向内容进行大致的总结,将综合言情小说、影视、女性向游戏、同人等内容媒介,基于个人心得和定性分析,提供女性向内容的构建方法,并在解析女性玩家的内容诉求基础上,进行未来趋势的预判。 简言之,笔者认为未来的“女性向”趋势不再是单纯的女性向游戏,而是在传统游戏品类中尝试接纳女性视角,即将游戏从常见的男性向为主的方向调整为中性化,形成对所有“玩家”皆友好、没有明显偏向的游戏。
腾讯大讲堂
2021/10/18
4.2K1
SQL简体繁体转换函数代码
在SQL查询窗口中直接创建表和函数 --生成码表 if exists (select * from dbo.sysobjects where id = object_id(N'[codetable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [codetable] GO declare @j varchar(8000),@f varchar(8000) select @j=' 啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎
用户1149182
2020/06/19
3.9K0
盘点python工具包并优化pip下载加速
开源地址:https://github.com/wolfbolin/BiliUtil 安装命令:pip install BiliUtil
全栈程序员站长
2022/09/15
5.6K0
盘点python工具包并优化pip下载加速
推荐阅读
相关推荐
T族(技术研发)通道晋升答辩之完全解析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档