HTML5 与原生:移动应用之争

发布于 2023-05-13 11:15:32 字数 6466 浏览 66 评论 0

移动应用程序和HTML5是目前最热门的两种技术,并且有很多重叠之处。Web 应用程序在移动浏览器中运行,也可以在各种移动平台上重新打包为本机应用程序。随着广泛的平台支持,结合移动浏览器的绝对功能,开发人员正在将HTML5作为 编写一个,运行多个 的解决方案。但它真的可行吗?仍然有令人信服的理由去原生,显然,许多开发人员确实在走这条路。本文是关于原生与网络的辩论。

要素丰富度

要点:原生可以做更多的事情

我们可以将移动功能分为两个维度:应用程序本身的体验,以及它与设备生态系统挂钩的方式,例如对于Android,这将是小部件和通知等功能。原生在这两个方面都表现出色。

在应用体验方面,原生应用可以做更多的事情。他们可以轻松掌握滑动事件,甚至是多点触摸,适用于支持它的平台。它们通常可以作用于按下硬键,例如Android的搜索按钮和音量控件。他们也可以访问硬件,如GPS和相机。在用户的许可下,某些平台提供对操作系统的不受限制的访问。只需尝试检测HTML5还剩下多少电池!

不过,这不仅仅是应用内体验。像Android这样的操作系统为应用程序提供了与用户交互的不同方式,实际上,与其他应用程序交互。您在主页上有活动的小部件。您有通知,这些通知显示在设备的状态栏中。并且你有意图,允许你的应用宣布自己提供其他应用有时可能需要的一般服务。

反方:原生功能可以增强,无论如何,网络正在迎头赶上

的确,许多应用内功能对于HTML5应用来说是遥不可及的。无论您的 web-fu 技能有多热门,如果您的应用程序被困在没有相机 API 的沙盒中,它都不会很快拍摄快照!幸运的是,您不必在该沙盒中。如果您确实需要您的 Web 应用程序来拍照,您可以创建一个本机应用程序,该应用程序具有嵌入式 Web 视图,可提供大部分用户界面。这就是开源PhoneGap框架的运作方式:它通过将本机功能公开为Web服务来填补空白,Web视图使用标准网络API调用这些服务。当您构建这样的混合应用程序时,您还可以连接到这些平台功能,如小部件、通知和意图。

制作混合 - 本机加网络 - 应用程序几乎不是一个理想的解决方案。它增加了复杂性,仅适用于包装为本机应用程序的 Web 应用程序,而不是从移动浏览器访问的传统网站。但这可能不需要太久。Web 标准正在迅速发展,现代移动浏览器也在跟上步伐。例如,离线存储、地理位置、画布图形和视频/音频播放都得到了现代 smarpthones 的广泛支持。甚至相机也开始得到支持 - 从Android 3.1开始,可以使用网络标准捕获照片和视频。最新的iOS浏览器支持WebSocket进行2向流式传输,以及设备方向检测。

总体而言,移动正在不断发展。但网络也在快速发展。仅在桌面浏览器中,就有五家主要的浏览器供应商以闪电般的速度发展标准并添加功能。虽然将这些功能移植到移动设备并不是一个微不足道的过程,但其中许多功能已经进入移动浏览器。

原生是一个快速发展的目标,但网络正在缩小差距。

性能

要点:本机运行速度更快

本机应用程序没有需要处理的 Web 运行时障碍。它们靠近金属运行,可以利用 GPU 加速和多线程等性能助推器。

反方:今天的Web运行时要快得多,大多数应用程序都不需要速度

如果说近年来网络变得更快,那就太轻描淡写了。V8是Chrome附带的JavaScript引擎,在推出时是Web性能的重大发展,从那时起,它只会变得更快:

图形渲染引擎也加速了网络的发展,现在硬件加速开始发生。看看硬件加速画布提供的减速带:

此外,新的 Web Workers API 使多线程成为可能,现代 Web 开发人员还可以调用一系列性能优化库和经过充分研究的性能优化技术。虽然其中大多数都是在桌面网络上开始的,但它们仍然与移动设备相关,并且对移动设备的关注越来越多,例如性能大师Steve Souders有一个 专门介绍移动性能工具的页面

并非所有的桌面进步都已进入每个移动平台,但趋势表明它们正在路上。同样重要的是要注意,大多数移动应用程序不是前沿的3D游戏,而是基本上基于信息的:新闻,邮件,时间表,社交网络等。从您的移动设备访问一些网站,例如GMail,亚马逊,Twitter,您可以确认移动网络性能绰绰有余。至于游戏,基本的游戏已经可以用2D画布来实现,WebGL开始出现在手机上 - 参见Firefox 4。在它普及之前,有一个不断增长的框架系列将WebGL应用程序编译为可以利用OpenGL的本机应用程序,例如 ImpactJS。 .

开发人员体验

要点:原生更容易开发

本机应用程序使用强大的编程语言(例如Java,Objective C,C++),这些语言专为复杂的应用程序开发而设计,并具有良好的记录。这些 API 是从头开始设计的,以支持手头的平台。您可以在桌面模拟器中轻松调试应用程序,这些模拟器提供了目标设备的紧密表示形式。

使Web开发特别麻烦的是浏览器和运行时的巨大多样性。当应用运行时,无法保证功能 X 将可用。即使是这样,浏览器将如何实现它?标准可以解释。

反方:Web通常更容易开发,特别是如果针对多个设备,则

让我们先解决核心技术问题。的确,Web 标准最初是在 Web 从根本上讲是关于文档而不是应用程序的时代构思的,JavaScript 在短短 10 天内构建和部署!但事实证明,它们比想象的要强大得多 - Web开发人员已经学会了利用好的部分并驯服坏的部分,现在理解了可扩展设计的模式。此外,这些标准并没有停滞不前,HTML5、CSS3和EcmaScript Harmony等努力都在改善开发人员的体验。你更喜欢C++、Java还是JavaScript是一个宗教争论的问题,也取决于你的遗留代码库。但是我们当然可以将JavaScript作为一个有力的竞争者。

浏览器/运行时碎片的另一面是,所有这些环境首先都存在。用Java开发一个Android应用程序,你面临着一个完整的移植到Objective C以支持iOS。开发一个网络应用程序一次,它将在Android和iOS上运行,更不用说WebOS,BlackBerry,Windows Mobile和...好吧,无论如何,这就是理论。在实践中,如果您真的想获得正确的体验,则需要为每个平台调整内容。但是对于大多数移动操作系统,您也必须在本机中执行此操作 - 有不同的版本和不同的设备。

好消息是 碎片化 在网络上一直都是这样,并且有众所周知的技术来处理它。最重要的是,渐进式增强原则敦促开发人员首先针对基本设备,并在可用的地方添加特定于平台的真棒层。功能检测的口头禅也有帮助,如今,我们有 来自Modernizr 等公司的库支持,以支持响应式网页设计。通过明智地使用这些技术,您可以将覆盖范围扩展到绝大多数设备,甚至是老式的 功能手机 ,甚至是手表和电视等外形规格,无论品牌和操作系统如何 multi-UI demonstration。 见证我们在 Google IO 2011 上的多 UI 演示,我们针对不同的外形规格(功能手机、智能手机、平板电脑、台式机、电视)以及逻辑和标记的通用代码库。

外观和感觉

要点:原生适合平台外观和感觉

任何平台的定义特征之一是其外观和感觉。用户开始期望控件以相同的方式一致地呈现和操作。某些习语因平台而异,例如,当用户执行 长按 (保持触摸元素几秒钟)时会发生什么?平台对这类事情有标准的习语,你不能用一个HTML5应用程序来满足它们。

此外,平台外观由平台的本机软件库编排,其小部件封装了用户期望的外观和感觉。只需使用本机工具包,您就可以 免费 获得许多预期的外观和感觉。

反方:网络有自己的外观和感觉,您还可以为您最关心的平台自定义 Web 界面

如上一节所述,Web开发的方式是编写一个基本的 一刀切 版本,然后逐步增强它。虽然增强功能通常基于功能,但您也可以通过定位您最关心的平台来增强它。这是一种 浏览器检测 ,有时被网络社区所反对,主要是因为那里有很多可能的浏览器。但是,如果您确实以非常高的优先级查看了两个或三个平台,并且您愿意付出额外的努力以与本机替代方案相提并论,那么这可能是要走的路。

就基线版本而言,Web有自己的外观和感觉,我们甚至可以说每个移动平台都有自己的 Web外观和感觉 ,由默认浏览器和Web运行时建立。 Web 外观 可能对您的用户来说很好,实际上,它可以让您实现与桌面浏览体验更大程度的一致性, 以及用户可能正在使用的其他设备上的那些。此外,有许多成功的应用程序无论如何都不太支持本机外观和感觉。游戏当然如此(你最喜欢的手机游戏是否遵循你的移动操作系统的外观和感觉?),甚至更传统的应用程序也是如此,例如在你选择的平台上查看更流行的原生Twitter客户端,你会看到各种各样的用户界面机制在起作用。

可发现性

要点:原生应用更容易被发现

应用程序分发机制,如Android的市场和苹果的App Store,近年来非常受欢迎,是整个移动行业的主要推动力。任何开发人员都可以将其本机应用提交到市场,用户可以通过浏览、搜索和获取建议的组合来发现它。不仅如此,如果你的工作做对了,发光的评级和评论将说服用户点击最重要的安装按钮。

反方:实际上,网络应用程序更容易被发现

网络可以说是有史以来最容易发现的媒体。在不起眼的URL中,我们(理论上至少)为网络上发布的所有内容提供了一个唯一标识符,其中包括在标准网站上发布的任何应用程序。搜索引擎可以轻松发现内容和其他网站可以链接到它,包括类似于移动市场的 Web 应用程序目录。事实上,任何人都可以通过电子邮件和社交网络消息链接到网络应用程序,与朋友共享网络应用程序。链接也可以通过短信发送,移动用户将能够单击链接并在其设备的浏览器中启动应用程序。

我们还没有相同的市场,用户可以对应用进行评分和评论,但这种情况也在发生变化。继续阅读...

货币

要点:原生可以变现

6岁的孩子在午餐时间制作应用程序,以每份3美元的价格出售无数份 。如今,您经常看到这个标题,因此难怪大大小小的开发人员都在寻求移动市场的货币化。移动平台为开发人员提供了多种直接为其应用收费的途径。最简单的是一次性付款,可以永久解锁应用程序。某些平台还提供应用内支付和订阅机制,它们紧密集成在一个一致、安全的机制中。这些较新的支付方式允许开发人员将热门应用程序转化为长期收入来源。

除了应用支付之外,您还可以使用传统的网络模式(例如广告和赞助)获利。

反方:在网络上获利总是可能的,而且机会正在增长

如果没有充足的赚钱机会,网络就不会成为现代工业的引擎。尽管直接的 按使用付费 机制尚未蓬勃发展,但基于订阅的 软件即服务 解决方案确实在各种利基市场中变得可行。例子包括Google Apps,37Signals的产品范围以及各种电子邮件服务的高级版本。此外,直接支付并不是从网络应用程序中获利的唯一方式。有在线广告,会员链接,赞助,对其他产品和服务的交叉推广。

话虽如此,对于Web开发人员来说,阅读头条新闻并体验一点付款嫉妒是完全合理的。您无法向原生市场提交 Web URL,那么 Web 开发人员该怎么办?您要做的是创建一个本机 包装器应用程序 - 对于要定位的每个平台,创建一个仅包含 Web 视图的空本机应用程序。Web 视图是嵌入真实应用的位置。然后,您只需将这些应用程序提交给各个市场(并希望看到资金滚滚而来!今天,在主要市场中可能有数百甚至数千个网络驱动的应用程序,其中一些被巧妙地同化,以至于我们甚至根本不了解他们的网络应用程序。

缺点是交叉编译到每个平台的责任。这就是像PhoneGap这样的现有框架可以提供帮助的地方。更好的是,还有像PhoneGap Build和Apparatio这样的Web服务正在开发中。将这些网站指向您的代码存储库,然后弹出一个 Android 应用程序、一个 iOS 应用程序等等......准备好供您提交到相应的商店。无需在计算机上安装本机 SDK;构建所有这些本机应用程序所需的只是一个代码编辑器和一个 Web 浏览器。

市场是否会直接支持 Web 应用程序,而无需在本地包装它们的所有开销?目前还不清楚。我们确实知道谷歌去年推出了Chrome网上应用店,虽然它仅适用于桌面,但该商店引起了其他浏览器供应商的兴趣,并且总体上是网络应用程序目录趋势的一部分,包括一些特定于移动设备的尝试。网上商店的概念还处于早期阶段,但迹象是有希望的。

结论

在这里宣布赢家会很好,但现在,没有明确的赢家。有些应用最适合本机应用,有些应用最适合网络。Web 堆栈可以说具有更大的动力,但就功能和执行质量而言,本机应用程序也在快速发展。除非有一段时间 Web 技术在大多数移动操作系统上是一等公民,否则原生将始终是一个重要的考虑因素。

本文中提到的一种技术是混合应用,对于某些开发人员来说,这可能是最好的折衷方案:可能的 Web 视图和不适合的平台特定本机组件。

如果您选择 Web 路径,请注意 Web 标准和渐进增强原则。网络是一种知道如何针对周围众多设备和操作系统的技术。无论您选择将其称为 碎片化 还是 多样性 ,网络都拥抱它,您的开发人员可以从所有现有技术中受益。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

明月松间行

暂无简介

0 文章
0 评论
817 人气
更多

推荐作者

yili302

文章 0 评论 0

晚霞

文章 0 评论 0

LLFFCC

文章 0 评论 0

陌路黄昏

文章 0 评论 0

xiaohuihui

文章 0 评论 0

你与昨日

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文