今天的软件开发环境从未像现在这样具有挑战性。现代硬件的丰富功能和消费者对性能和稳定性的高度期望结合起来,确保开发者需要尽可能多的帮助来满足他们的最后期限。在所有这些挑战中,最令人烦恼的是需要支持当今大量的设备和操作系统。
创建跨平台应用程序的一个主要目标是确保尽可能多的代码可以被重复使用。对于网络开发者来说,渐进式网络应用程序(PWA)是支持他们努力向用户有效地提供一致的、高质量的体验的关键技术之一,无论他们在哪里访问它们。本文将回顾什么是PWA,为什么它们很有价值,以及PWA今天的情况和未来可能的发展情况。
概述
渐进式网络应用程序(PWA)结合了一种叫做渐进式增强的设计理念和先进的网络浏览器API,以提供类似于本地应用程序所提供的体验。
渐进式增强是一种理念,主张在开发应用时只使用应用的所有目标平台所支持的功能。当应用程序在具有更多能力的系统上运行时,额外的功能会被激活,以增强用户体验。渐进式增强的一个例子可以在许多具有搜索功能的应用程序上找到。在移动设备上,搜索功能可能包括一个简单的文本搜索。然而,在笔记本电脑上,同样的搜索功能可能被增强了排序和过滤功能。许多PWA使用某种程度的渐进式增强来微调每个平台上的用户体验,以利用其能力。
除了渐进式增强外,PWA还利用现代网络浏览器的能力来提供近乎原生的体验。像推送、通知和地理位置这样的API允许PWA访问那些模糊了本地和网络应用之间界限的功能。正如我们后面要讨论的,这些API是PWA生态系统中最有争议的部分。
到目前为止,我们所谈到的一切都同样适用于所有网络应用,包括PWA。然而,要使一个网络应用成为PWA,必须满足一些特定的要求;它们必须通过安全连接(如HTTPS)提供服务,有一个服务工作者,并包括一个清单文件。
由于应用程序需要高度敏感的信息,PWA必须有一个安全连接。许多先进的浏览器API,如地理位置,需要这种类型的连接,以帮助保护用户信息不被拦截和用于恶意目的。
服务工作者几乎总是对PWA至关重要,因为它们提供了一种方法,使应用程序在离线时继续运行。虽然每个PWA处理这种情况的方式不同,但它们必须有一些既定的策略。服务工作者还允许PWA缓存对普通请求的响应,并使应用程序更快、更有响应性。
PWA的清单文件是一个JSON文档,它提供了基本信息,允许应用程序作为一个本地应用程序被 "安装"。一旦安装,该应用程序看起来就像该平台上的本地应用程序,具有完整的标题、图标、屏幕截图等。
价值主张
现代应用开发是具有挑战性的,所以管理任何项目的复杂性是至关重要的。那么,问为什么一个团队会决定把他们的网络应用变成PWA是合理的。虽然PWA有很多优点,但我们将在本文中重点讨论四个方面。
PWA的行为像本地应用程序
PWA的主要好处之一是它们在用户面前显得很正常。传统上,网络应用必须从网络浏览器访问。这往往使网络应用更难找到,而且浏览器Chrome常常限制了它们的可用空间,这对移动设备来说是一个特别关键的考虑。PWA可以安装在设备上,像其他应用程序一样被访问。它们也从浏览器的Chrome中解放出来,因此,可以最大限度地利用可用的屏幕空间。当PWA的服务工作者使用积极的缓存策略时,用户体验可以变得更像本地人。虽然这对首次访问资源没有帮助,但当多次检索资源时,它可以极大地提高应用程序的响应速度。
PWA更容易被重新发现和重新投入使用
普通的网络应用程序是停留在浏览器中的。当用户导航到一个不同的页面或关闭浏览器时,应用程序就不能再与他们互动。PWA通常利用API,如推送 和通知,让用户知道他们可能感兴趣的事情发生。这种类似于本机的功能增加了用户多次重新接触该应用程序的可能性。
PWA易于升级
确保用户利用一个应用程序的最新功能是给他们最好的体验的一个重要组成部分。虽然简单的通知会让许多用户升级原生安装的应用程序,但要确保所有用户都能得到新版本提供的好处,这可能是一个挑战。这在移动设备上可能更具挑战性,因为新版本在Google Play或Apple AppStore上发布之前,往往必须经过批准。
PWA从互联网上下载其大部分资产,为公司提供了一个直接的升级途径。许多PWA将升级策略纳入其服务工作者。这允许用户继续使用旧版本的预缓存资产,同时在后台下载新资产。这提供了一个版本之间的无缝过渡,而不会因为管理细节而分散用户的注意力。
PWA相对较小
本地应用程序必须与它们的所有依赖项一起安装。这通常会导致大的安装包,使低带宽连接互联网的用户感到沮丧。由于PWA利用网络浏览器来实现其大部分基本功能,它们只需要下载特定的应用资产。因此,它们通常比具有类似功能的本地版本小得多。
目前的状况
在考虑PWA的现状时,有两件主要的事情需要讨论:它们的普及和潜在的能力。
鉴于PWA相对于传统网络应用的优势,市场份额仍然低得令人吃惊。虽然很难找到确切的数字,但一个合理的估计是,所有网站中有2.2%包含网络应用程序清单,因此,可能是PWA。其中一个主要原因可能是由于网站的多样化性质。许多网站,如博客网站,根本不会有任何价值作为一个PWA。对于那些可以从PWA中受益的网站,利用率仍然很低,但在稳步上升。两种主要但相互冲突的力量似乎在推动这种缓慢的采用。
将一个网络应用程序转变为基本的PWA所需的努力是最小的。许多公司正在更新他们的应用程序,以包括原始的服务工作者和清单,产生一个简单的PWA,并推动其市场份额的增长。然而,这些应用程序中的许多只是做了足够的安装工作;它们不一定接受渐进式增强和先进的API,而这些API释放了PWA的大部分效用。
根本性的分歧阻碍了应用,导致建立PWA的基础不稳定。包括谷歌和微软在内的公司联盟正试图通过为其各自的网络浏览器创建更多、更丰富的API来扩大PWA的功能。然而,这一努力正被另一个由苹果和Mozilla领导的团体所平衡。这第二个群体越来越关注PWA所带来的用户隐私问题。这种根本性的冲突威胁着PWA的关键承诺之一--使用单一的网络应用程序来提供类似于本地的性能,而没有与传统应用程序相关的开销。这种分歧导致了这样一种情况:PWA在一些平台上获得了能力,而在另一些平台上却失去了能力。
下一步是什么?
随着主要浏览器供应商的分裂,未来一年左右将出现新的和被删除的功能的混合。
PWA目前在显示方式上有有限的选择,大多数选择独立,即指示平台将PWA作为一个标准应用来渲染。未来可能会增加新的选项,比如支持需要标签式界面的应用。
不久的将来还有望引入PWA可以利用的新API,至少在谷歌和微软平台上是这样。Fugu项目正在引领这一潮流,每隔几周就会推出新的功能。苹果也在iOS和iPadOS上增加了一些新功能,比如使用FaceID和TouchID的能力。这表明一些新功能可能会出现在苹果的平台上,但隐私问题有望限制增长。
总的来说,PWA的近期前景将是零散的。谷歌和微软平台上的新特性和功能有望使它们比以往更加强大。然而,苹果和Mozilla所表达的隐私问题可能会导致冻结Safari和FireFox驱动的PWA的功能。鉴于其相对较少的开销的优势,PWA有望继续缓慢地获得市场份额。这可能会随着主要供应商解决他们的不同观点,并在平台的能力和解决隐私问题的能力之间建立平衡而增加。