文章转发自微信公众号:程序员Sunday
关注公众号,与我一对一交流~
最近看团队同学在聊 PHA ,决定写一篇文章深入探讨下 PHA ,同时与 PWA、Native APP做一个对比,希望对大家有帮助。话不多说,直接开始!
前言
Native 应用程序(Native app)、PHA 应用程序(Hybrid App)和渐进式 Web 应用程序 ( PWA ) 是三种开发应用程序的主要方法,每种方法都有其独特的优缺点。 选择正确的应用开发方式对于应用程序的成功至关重要,因为它会影响性能、用户体验和成本等诸多因素。
接下来将带着大家深入探讨原生、PHA 和 PWA 应用开发之间的差异,并指导开发者决定哪种方法最适合自己的项目研发。
1.选择应用程序的三个要素
首先,在选择具体的应用模式时应针对用户的偏好和需求,考虑以下方面:
- 操作系统:确定使用最多的系统,是 iOS 还是安卓,还是需要兼容两者,从而有效避免时间和资源浪费
- 时间和预算:每种技术都有不同的周期和预算要求,因此必须明智地估计项目的需求
- 应用程序类型:根据要开发的应用程序,选择正确的技术至关重要,因为它们需要不同的编码实践。
简而言之,在开始开发之前需要综合考虑以上几件事,接下来带着大家一起聊聊 Native、混合(PHA)和 PWA 应用程序之间的真正区别。
2.Native 应用程序
Native 应用程序涉及使用其本机编程语言和开发工具专门为特定平台(例如 iOS 或 Android)构建移动应用程序。 随着过去几十年软件开发的加速发展,Java 和 Objective-C 逐渐被 Kotlin (Android) 和 Swift (iOS) 所取代。
这种方法是移动应用程序开发的黄金标准,因为它允许开发人员创建针对特定平台优化的高性能应用程序并充分利用设备的功能。
2.1 Native 应用程序优点
Native 应用程序开发的主要优势之一是它通常会带来更快的应用程序性能和更好的用户体验。由于 Native 应用程序是专门为特定平台构建的,因此可以针对设备的硬件和软件进行优化,从而使应用程序更加无缝运行和响应迅速。
Native 应用程序还可以完全访问设备的特性和功能,例如:相机、GPS 和推送通知等等。
总结起来可以以用以下几个点来重点概括 Native 应用程序的优势:
- 支持应用预装提升性能:Native 应用程序通常比 PHA 应用程序或 Web 应用程序运行更快,并且可以立即加载到用户的设备上,比如通过应用程序商店进行预装(适用于 iOS 的 Apple App Store 或适用于 Android 的 Google Play Store),预装过程会在系统开机时自动进行。
- 支持个性化更新:如果终端用户使用不同的设备,但无需同步更新,Native 应用程序允许在每个应用商店中发布多个版本的应用。 因此,即使出现新的操作系统更新,开发者仍然可以通过单独的发布渠道为旧设备提供支持。
- 系统底层核心功能访问齐全:使用 Native 应用程序,可以访问特定设备上的所有功能。 包括:相机功能、GPS 定位和蓝牙功能等等。 开发者甚至可以创造性地使用这些功能来为用户、平台提供额外的价值。
- 集中分析管理:应用程序能与正在开发的平台兼容的所有设备上可用。 此外,Google Play Store 和 Apple App Store 等应用商店提供的工具支持与用户交流、衡量用户参与度、管理分发、使用分析和查看报告等等,这对于改进应用程序本身有重要作用。
- 应用完全可控: 开发者可以完全控制 Native 应用程序,并且可以立即做出需要的任何更改。
- 购买订阅支持:如果想提供应用内购买、订阅或访问高级内容(如视频和音频)等特性,Native 应用可能是唯一的选择。
2.2 Native 应用程序缺点
Native 应用程序比其他程序方法更昂贵、更耗时,因为每个平台都需要单独构建代码库。 如果开发者想在 iOS 和 Android 上发布应用程序,将需要构建该应用程序的两个独立版本。 从而增加总体开发成本和将应用程序推向市场所需的时间。
Native 应用程序在以下几个场景中可能不太合适:
- 用户不需要仅在 Native 应用程序中可用的功能,例如:推送通知和与硬件设备(包括相机和 GPS 跟踪器)等的集成
- 希望通过删除复杂和不必要的功能来提供最佳用户体验,不具有许多动画的 3D 游戏或应用程序
3.PHA 混合应用
PHA 使用 HTML、CSS 和 JavaScript 等 Web 技术构建移动应用程序,将其包装在 Native 容器中并部署在各种平台上。 这种方法允许开发人员创建可跨多个平台使用的单一代码库,从而缩短开发周期并提供更具成本效益的解决方案。
3.1 PHA 优点
混合应用程序开发的主要优势之一是它允许开发人员更快、更高效地为多个平台构建应用程序。
因为开发人员可以为 iOS 和 Android(以及可能的其他平台)使用相同的代码库,所以它减少了构建不同版本的应用程序所需的时间和资源。 它通常也比开发 Native 应用程序更具成本效益,因为它需要更少的资源和更短的开发时间。
PHA 的优点可以总结为以下几个点:
- 面向浏览器而不是底层系统:当开发者使用 Cordova 构建 PHA 应用程序时也就意味着正在编写针对浏览器而不是特定本机操作系统的代码。 一方面意味着工作量减少了,当应用程序的一个版本需要升级时,它也适用于使用 Cordova 构建的所有其他版本。
- 更好的跨平台:PHA 具有比 Native 应用程序更好的跨平台支持。使用 PHA 应用程序,开发者只需编写一次业务逻辑,它就会在任何受支持设备的 WebView 中运行。 因此,无需针对 iOS 和 Android 单独构建。
- PHA 应用比原生应用更稳定:PHA 应用程序更稳定,因为始终在解释器中运行,因此可以处理一些可能导致应用程序崩溃的极端情况。
- PHA 应用程序更易于维护:因为代码更少,所以更容易掌控一切。 开发者不必担心自动更新等功能,并且由于其相对简单,开发者可以在多个项目中重复使用代码。
- PHA 比原生应用更便宜:特别是如果想通过它们获利,在 PHA 应用中,开发者可以提供应用内购买和广告,而不必担心分发问题。
- 不必学习一门新语言:如果想为多个平台开发移动应用程序,可以减少学习一门新语言的时间成本。
3.2 PHA 缺点
PHA 开发有时会导致性能下降和潜在的用户体验变差。 由于该应用程序在 WebView 中运行,因此它可能未针对特定平台进行优化,并且可能无法访问设备的所有特性和功能。
此外,PHA 应用的用户体验可能不像 Native 应用程序那样顺畅和无缝。 因此,在决定 PHA 是否适合当前项目之前,仔细考虑 PHA 应用程序开发的权衡很重要。
将 PHA 的缺点进行简单的总结,主要包括以下几个点 :
- 如果追求应用商店的好处(更大的市场、货币化等),请选择原生应用。 使用 PHA 应用程序,必须引导用户在移动设备上安装网络浏览器,以便安装应用程序(当然很多系统都内置了浏览器)。
- 如果希望应用程序在 Google Play Store 上可用,那么必须再次从 Apple/Google 服务器请求许可,因为他们不认为当前应用程序是本机应用程序,因此会阻止它。
- 如果希望应用程序即使在用户离线时也能正常工作,可以考虑原生应用程序。
- 如果需要特定移动设备或操作系统上的完整功能集。与 Native 应用程序不同,PHA 应用程序的访问权限非常有限。
- 如果想完全控制应用程序更新。因为 PHA 应用程序是在浏览器上构建的,它们依赖于构建它们的开发者社区。
- 如果想要一个流畅和高效的性能, 加载时间慢和用户体验差的风险总是存在的,因为 WebView 将从互联网加载所有资源( JavaScript,css,html 等)。 而下载资源时,用户可能需要等待很长时间。
- 如果想要更高的安全性,Native 应用程序比 PHA 应用程序更合适。 如果开发者使用的是具有已知漏洞的开源 WebView 组件,应用程序也会存在这些漏洞。
4.PWA
PWA 开发涉及将移动应用程序构建为可通过 Web 浏览器访问的网站。 PWA 旨在提供类似 Native 应用程序的体验,开发者可以像安装本机应用程序一样将它们安装在终端设备上。 它们是使用 HTML、CSS 和 JavaScript (React Native) 等网络技术构建的,因此可以跨多个平台访问。
4.1 PWA 优点
PWA 的主要优点之一是它允许更快的开发时间和更具成本效益的解决方案。
与 PHA 应用程序开发一样,PWA 可跨多个平台使用单一代码库,减少了构建应用程序的单独版本所需的时间和资源。 PWA 通常也比 Native 或 PHA 应用程序更轻巧且更易于维护。 此外,PWA 还具有离线功能的额外优势,这意味着用户在未连接到互联网时仍然可以访问某些应用程序功能。
PWA 的优点可以总结为以下几个点:
- 更好的搜索引擎排名:PWA 通常被搜索引擎(如:谷歌)收录,排名高于普通应用程序。 例如在 Google Play 商店中查找内容时,出现的第一个链接通常是该应用的 PWA 页面。
- 更高的可用性:考虑到 PWA 在不同设备和浏览器上的无缝工作,用户可以通过移动浏览器和台式机访问
- 更易于分享:可以创建书签或将页面保存为快捷方式,因为 PWA 是在浏览器中加载的网站。
- 离线工作:这是 PWA 相对于 Native 应用程序的最大优势。
- 没有移动存储问题:PWA 可以在设备上存储数据,但它们不需要占用手机上的空间。
- 应用程序体积小:由于其轻型架构,PWA 比 Native 应用程序相对较小。 例如,Twitter 的 Native App 大约有 100MB,而 PWA 版本 只有 7MB。
- 随时可用:使用 PWA,可以从任何设备或浏览器访问应用程序,而无需安装任何东西。
- 类似原生的性能:PWA 旨在超快加载并提供接近本机的性能。 如果查看 Twitter 的 Web 界面在移动设备上的外观能够发现 Web App 与其 Native App 之间没有区别。
- 谷歌友好:对于希望通过网络营销计划从其产品中赚钱并快速完成审批流程的开发人员来说,使用 PWA 时,无需提交那些讨厌的屏幕截图。
- 完全控制 API:开发者可以选择是否使用 API,然后继续设置自定义参数,如:身份验证方法、请求限制等。当您希望仅允许已在网站上拥有登录帐户的用户访问时,这非常有用。
4.2 PWA 缺点
与 Native 和 PHA 应用程序相比,PWA 有一些限制。 PWA 只能部分访问设备的所有特性和功能,并且用户体验可能因所使用的平台和浏览器而异。
此外,与基于 Web 的应用程序相比,一些用户可能更喜欢 Native 应用程序。 在决定它是否适合当前项目之前,必须仔细考虑 PWA 开发的权衡。
将 PWA 的缺点进行简单的总结,主要包括以下几个点 :
- 希望用户使用您的应用程序的时间更长:PWA 运行在不适用于移动环境(浏览器)的技术上,这与主要用于移动设备的原生应用程序不同。 因此,设备需要更多电量来解释代码,从而导致手机和平板电脑的电池消耗更多。
- 如果想要完全访问本机功能和 API(如相机):由于 PWA 在浏览器上运行,混合应用和 PWA 都只能有限地访问设备功能,这与本机应用不同。
- 如果希望应用程序可以在旧操作系统和设备上运行:最新的设备通过浏览器加载 PWA 网站没有问题,但操作系统过时的旧设备就会有问题,从而会给用户带来体验的问题,甚至卸载应用程序。 如果当前应用程序具有需要大量带宽或即时响应的功能,这可能是一个重大限制。
- 如果希望应用程序在一系列浏览器上运行:某些浏览器仍然不支持 PWA,比如目标用户是 Internet Explorer 用户,或者打算支持较旧的 Android 设备,PWA 不一定是好的选择。
5.Native App/PHA/PWA对比
Native 应用程序开发是一流的,非常适合创建高性能、功能丰富的应用程序。 但是开发需要更多的时间和金钱。 如果想快速推出应用程序并节省一些现金,那么 PHA 应用程序开发非常好。
但是请记住,PHA 可能不像本机应用程序那样流畅。 而相比之下,PWA 开发速度超快,性价比高,用户甚至可以离线使用,但是 PWA 可能无法访问 Native 或 PHA 应用程序的所有特异功能。