Web App vs. Native App(面试马后炮2)

用户头像
天津/UI设计师/9年前/127浏览
Web App vs. Native App(面试马后炮2)
用户头像
radarz

了解react时看到的一些有用的资料

Web app如今大行其道,但是依然干不掉传统手机APP,身为前端+设计,被问到原因时常常表示不明白,由于之前的一次面试,开始调研一些关于react的基础资料,开始对这个问题有些资料性的了解,于是做个备份~


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

跨平台:所有系统都能运行

免安装:打开浏览器,就能使用

快速部署:升级只需在服务器更新代码

超链接:可以与其他网站互连,可以被搜索引擎检索


Web app有性能瓶颈

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

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

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

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

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

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

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



未来的Web app提出了几点预测,我认为很值得分享。

(1)多线程浏览器。每个网页应该由多个线程进行处理,主线程只负责布局和渲染,而且应该在16毫秒内完成,Javas cript由worker线程执行,这样就不会发生堵塞了。Mozilla正在开发的Servo就是这样一个项目。

(2)DOM的异步操作。Javas cript对DOM的操作不再是同步的,而是触发后,交给Event Loop机制进行监听。

(3)非DOM方案。浏览器不再将网页处理成DOM结构,而是变为其他结构。React的Virtual DOM方案就是这一类的尝试,还有更激进的方案,比如用数据库取代DOM。


1
举报
|
1
分享
评论
用户头像
评论你的想法~
表情
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
卡通女孩与网页表格3D渲染
三个青年站在网页周边矢量插画
卡通女孩与网页表格3D渲染
互联网,互联网插画,商务,数据,项目,合作,精准,投放,网页插画,插画,大数据,智能,商业,网页,网页设计,插画设计,互联,未来,交流,沟通,渐变
三个青年正在装修网页矢量插画
男生坐在网页面前办公矢量插画
男生和女生站在网页面前矢量扁平插画
四个人物分别在上网贴纸合集
一个人拿着优惠券准备支付购物电商矢量插画
网页图标
一个男生和两个女生站在网页前面打招呼矢量
女生坐在网页面前办公矢量插画
卡通风格网页页面3D渲染
卡通风格网页页面3D渲染
B19【星空诗意&网页幽灵按钮】公司产品服务简介汇报
卡通风格网页页面3D渲染
B19【星空诗意&网页幽灵按钮】公司产品服务简介汇报
新年快乐送福网页矢量图banner
户外旅行飞机情侣假日出行
户外旅行飞机情侣假日出行
卡通风格网页页面3D渲染
网页设计——纸杯蛋糕
卡通风格网页页面3D渲染
女生坐在网页面前办公矢量插画
一个男生和两个女生站在网页前面打招呼矢量
你可能喜欢
大家都在看
登录注册