一、Web APP 和 Native APP
Web APP
的优势非常明显:
- 跨平台:所有的系统都能运行
- 免安装:打开浏览器就能使用
- 快速部署:升级只需要在服务器更新代码
- 超链接:可以与其他互联网互联,可以被搜索引擎检索
Web APP
的劣势然让人难过:
- 体验差:展示比原生慢,且操作流畅性差
-
业界不支持:几乎所有公司主营产品都以
app
方式实现 - 用户较少:用户肯定是哪个好用用哪个
二、Web APP 的瓶颈
Web app
输给Native app
的地方,不是界面(UI)
,而是操作性能;主要是互动(interaction)
和动画(animation)
这两个方面,会出现卡顿(jank)
,用户会感到明显的迟滞,有时甚至难以忍受。
Web app的性能瓶颈,主要有以下原因:
1. Web基于DOM,而DOM很慢。 浏览器打开网页时,需要解析文档,在内存中生成DOM结构,如果遇到复杂的结构,这个过程是很慢的,可以想像一下,如果网页有上万个、甚至上十几万个形状(不论是图片还是css)生成DOM需要多久?就更不用说与DOM互动了。
2. DOM拖慢了javaScript。 所有的DOM操作都是同步的,会堵塞浏览器,javaScript操作DOM时,必须等待前一个操作结束,才能执行后一个操作。只要有一个DOM出现卡顿,整个网页就会短暂的失去响应。浏览器重绘网页的频率是60FPS(16毫秒/帧),javaScript做不到16毫秒内完成DOM操作,因此产生了跳帧。用户体验不流畅,不连贯,就是这个原因。
3. 网页是单线程的。 现在的浏览器对于一个网页,只用一个线程处理。所有的工作都在这一个线程上完成,包括布局,渲染,javaScript执行,图形解码等等,自然就慢下来了。
4. 网页没有硬件加速。 网页都是有CPU处理的,没有GPU进行图形加速。
这些问题,对于pc来说,还不至于造成多少严重的问题,但是对于手机的硬件资源十分有限,用户互动又相对频繁来说,web App 和 Native App相比,就显得输人一截了。
三、原生APP的瓶颈
1. 开发成本高。原生App分Android和IOS,同一个应用需要开发两次,并且不可复用。
2. 维护成本高。应用从诞生之初及其整个生命周期中,难免会有多个版本的升级迭代。对于原生App升级需重新下载应用或下载补丁包。
3. 占用设备资源。小存储的手机用户对app的数量相对敏感。内存或硬盘不足时都会选择卸载部分应用,或者删除缓存数据等。
四、发展方向:混合APP
其实现在已经有大量的应用采用混合APP方式,你所熟知的淘宝,微信、支付宝、京东,滴滴,头条美团等等全都采用这种方式,这也是必然的。否则可能一个大型应用,直接就能占用完你手机的全部资源。
混合App不仅能兼顾流畅度、访问速度问题,还能保持相对较小的应用体积,从而满足用户的各方面需求。