APP Tech · 2018年07月26号 0

Web App和Native App的比较

一、Web App vs. Native App

比起手机App,网站有一些明显的优点。

  • 跨平台:所有系统都能运行
  • 免安装:打开浏览器,就能使用
  • 快速部署:升级只需在服务器更新代码
  • 超链接:可以与其他网站互连,可以被搜索引擎检索

但是,现实是怎样呢?

(1)体验差。手机App的操作流畅性,远超网站。

(2)业界不支持。所有公司的移动端开发重点,几乎都是原生app。

(3)用户不在乎。大多数用户都选择使用手机app,而不是网站。

如果将来有一天,Web app会成为主流,一定有一个前提,那就是它的性能可以赶上Native app。

二、为什么Web app有性能瓶颈?

Web app输给Native app的地方,不是界面(UI),而是操作性能。主要是互动(interaction)和动画(animation)这两方面,会出现卡顿(jank),用户会感觉到明显的时滞,有时简直慢得难以忍受。

Web app的性能瓶颈,主要有以下原因。

(1)Web基于DOM,而DOM很慢。浏览器打开网页时,需要解析文档,在内存中生成DOM结构,如果遇到复杂的文档,这个过程是很慢的。可以想象一下,如果网页上有上万个、甚至几十万个形状(不管是图片或CSS),生成DOM需要多久?更不要提与其中某一个形状互动了。

(2)DOM拖慢JavaScript。所有的DOM操作都是同步的,会堵塞浏览器。JavaScript操作DOM时,必须等前一个操作结束,才能执行后一个操作。只要一个操作有卡顿,整个网页就会短暂失去响应。浏览器重绘网页的频率是60FPS(即16毫秒/帧),JavaScript做不到在16毫秒内完成DOM操作,因此产生了跳帧。用户体验上的不流畅、不连贯就源于此。

(3)网页是单线程的。现在的浏览器对于每个网页,只用一个线程处理。所有工作都在这一个线程上完成,包括布局、渲染、JavaScript执行、图像解码等等,怎么可能不慢?

(4)网页没有硬件加速。网页都是由CPU处理的,没用GPU进行图形加速。

上面这些原因,对于PC还不至于造成严重的性能问题,但是手机的硬件资源相对有限,用户互动又相对频繁,结果跟Native app一比,就完全落在了下风。

自iOS和Android这两个的手机操作系统发布以来,在互联网界从此就多了一个新的名词:App(意为运行在智能的移动终端设备第三方应用程序)。
开发者们都知道在高端智能手机系统中有两种应用程序:一种是基于本地(操作系统)运行的APP;一种是基于高端机的浏览器运行的Web App。
Native App因为位于平台层上方,向下访问和兼容的能力会比较好一些,可以支持在线或离线,消息推送或本地资源访问,摄像拨号功能的调取。但是由于设备碎片化,App的开发成本要高很多,维持多个版本的更新升级比较麻烦,用户的安装门槛也比较高。但是比较乐观的是,AppStore培养了一种比较好的用户付费模式,所以在Apple的生态圈里,开发者的盈利模式是一种明朗状态,其他market也在往这条路上靠拢。

优势

1、提供最佳的用户体验,最优质的用户界面,最华丽的交互
2、针对不同平台提供不同体验
3、可节省带宽成本
4、可访问本地资源
5、盈利模式明朗
6、打开速度更快

劣势

1、移植到不同平台上比较麻烦
2、维持多个版本的成本比较高
3、需要通过store或market的确认
4、盈利需要与第三方分成
5、开发的成本比较大
根据百度2013年Q1发布的《移动互联网发展趋势报告》显示,在全行业的移动浪潮中,Native App开发者遇到前所未有的挑战。Native APP遇到的三大困境:1、虽然用户手机里的Native APP数量在增多,但日均启动个数却在减少;2、用户的使用时长不断向高频Native APP集中,加剧了头部效应;3、对于低频和不知名的Native App,则面临着更严峻的“分发”和“使用”长尾困境。这三大困境对开发者形成了较大的挑战。
其中,大部分低频和不知名Native App在应用商店少人问津,无法到达用户手机。数据显示,应用商店下载量最大的前1000个(数量占比不足0.1%)App,占据了总下载次数的一半以上。这说明用户在下载应用时“马太效应”明显。困境同样也体现在应用使用率上,用户下载之后极少使用,要用时却想不起或找不到它,甚至是六成的Native APP被下载安装后一周内并未被使用,其中又有约1/3在一个月内都未被使用,逐渐成为“僵尸应用”。
Web App、Hybrid App、Native APP对比
Web App(网页应用)
Hybrid App(混合应用)
Native App(原生应用)
开发成本
维护更新
简单
简单
复杂
体验
Store或market认可 不认可 认可
认可
安装 不需要
需要
需要
跨平台