欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

HTML 5 应用的用户体验能达到本地应用那么好吗?

程序员文章站 2022-05-02 17:24:35
...
我是指用 HTML 5做成 Web 应用或打包成本地应用两种情况下

回复内容:

先举两个案例:

1. Shiu:HTML5 打造的离线 web book(app),请用 iPhone 测试 [1]
2. Flipboard 的 web 仿造版 [2]

HTML5 可以(或者说有潜力)在用户体验上达到本地应用的__平均水准__。

这主要得益于 Webkit 带来的竞争,标准「军备」翻了一翻:

- CSS animation, GPU acceleration
- JavaScript/DOM API improved, e.g. File API
- Offline storage

但是 HTML5 应用最大的问题(瓶颈所在)却还没有「标准地」解决:

- 性能
- OS 交互

虽然 V8 引起的性能竞争很激烈,但终究也只是 JS engine,HTML5 可不是一个 JS 快了就完事的玩意。

比如 DOM repaint & reflow、CSS animation 都不是低需求的主。

GPU acceleration 实现也还不是「标准」,各有各的情况。

这里举两个例子:Twitter & iCloud.com

Twitter 网页版体验上看上去挺接近本地应用的(除了 online 外),但是在 Chrome 下占用内存可以轻易超 100MB,最多时 800MB(似乎是 Chrome bug 引起),长时间运行会影响系统效能。

而 Echofon 在长时间运行后,始终保持在 100MB 以下,CPU 也不会高。

iCloud.com 在 UI 和功能上都往本地应用看齐,比如 Calendar。但遗憾的是,在我的 MBP 374 里,卡顿感明显,比如双击后停顿 .5s~1.5s 才弹出添加事件的窗口。并且内存占用达到了 438MB。

至于 OS 交互,你懂的。

因此 HTML5 的体验可以达到本地应用的__平均水准__,再往上就需要看平台、设备,对开发者的水平也挺看重。

HTML5 应用更多是看运行的平台,比如背后用 Cocoa、界面用 WebView 呈现,比如豆瓣出品的 OneRing,比如针对 Chrome/Webkit 的离线应用。

所以建议你们在考虑「HTML5 体验行不行」时,先考虑:

- HTML5 开发成本 V.S. 本地应用开发成本(比如团队学习成本)
- 核心需求是否能通过 HTML5 实现(比如 UI animation 是不是很多)
- 核心用户的平台(比如中国 Win 用户)
- ......

如果目标群体设备的性能都比较理想,HTML5 是不错的。

另外,上面都是谈普通应用,游戏的话,HTML5 是很好的平台,会有更好的表现。

----

- [1] github.com/alswl/shiu
- [2] tympanus.net/Developmen 取决于你的应用类型,你需要大量的特效和动画,或者调用很多系统资源比如摄像头的话,HTML5不是个好选择。否则的话问题不大。

当然这并不是说HTML5只能开发简单朴素的应用,从google的动态doodle和g+其实可以看出HTML5的能力。

使用HTML5需要前端对浏览器性能和差异的了解很深,才能保证整体效果。要解决响应速度问题,开发中可以使用适当分页面加载,或者先响应动作,再加载数据或者直接预加载数据的方式解决,只不过对前端代码的要求就更高了。 对于HTML5的效果和效率讨论详细在很长时间内都是一个无法回避的话题。下面从几个方面来谈谈我的看法。

首先,随着硬件和系统的不断升级,一些以前很头疼的效率和效果都能得到解决,比如在android2.3时代的页面展现,由于使用的是android browser而不是
chrome,有很对webkit特有的特性都不支持,如输入框的边框显示,css的遮罩效果,一些css特效动画等都不能实现。从效率上页面渲染的速度也比较慢,主要原因
应该还是dom占用内存很多导致。而目前的主流手机都已经是2G甚至4G内存+,并且大都配置了android 4.x(关键是4.4版本)了,浏览器默认都是chrome了,上述问题可以说
基本得到了解决。因此我想说的是,当我们把目光放远一些,会发现HTML5是很诱人并且确实是很现实的选择了。

然后谈一下做一款HTML5应用的体会和经验吧,对于HTML5和原生的优劣比较这里不多说了,已经有了很多很好的论述,我从实际开发的角度说一下有哪些可以优化的地方。
1 网络连接优化:应该说网络连接优化是最可控的,这个能达到和原生应用完全一致的体验。原因很简单,HTML5应用里面所有的html页面,css,js,图片等,我们都
可以打到安装包中,用户安装完毕后,打开的页面都是本地页面,不需要连网,只有产生业务数据时,才使用AJAX进行数据请求。而对于网络情况的判断,对于连接超时的
设置等,JS或者说XHR规范都支持了。
2 数据本地存储:主流浏览器对于LOCAL STORAGE的支持没有问题,可以保证本地存储的实现。当然,这个存储是KEY-VALUE模式的,需要在应用中对于存储的数据进行
一定的设计,比如用JSON存储实际数据,而对于这些数据的检索,目前也已经有了不少JSON QUERY的支持库了。当然CHROME也支持SQL LITE,不过个人对于这种方式
不推荐,毕竟在客户端上我们不需要太复杂的SQL查询。
3 文件本地存储:在原生应用中很多文件我们都需要下载到本地,比如音视频,图片等,HTML5应用一样,如果是纯HTML模式那么目前我们可选择的就只有CHROME的
FILE SYSTEM了,当这个选择会有一些限制,比如需要用户同意本地存储的策略,另外FILE SYSTEM的存储路径与物理路径没有直接关联,这个对于应用的调试和管理
也会产生障碍。因此这里还是推荐使用原生插件的模式,利用原生文件系统做这个事情,比如CORDOVA的FILE TRANSFER插件。
4 音视频的播放:HTML5的插件可以满足需求
5 动画效果:HTML5 CANVAS以及CSS3的各种动画特效都能满足需要。
6 录音录像:CHROME的WEBRTC可以实现,但是在手机上的效果一般,还是建议使用原生的插件或者自定义插件实现。
7 页面展现和排列:这个确实效率比原生应用有一定差距,尤其是滚动和页面内容比较多的时候。这就需要应用在渲染的时候进行优化,比如限制展现区域,比如在定义
点击区域时尽量使用TAP而不是CLICK,并且最好减少对于大区域的点击事件.....

最后介绍一款使用HTML5实现的安卓应用:),OK外语宝,一款英语学习的安卓应用,使用CORDOVA框架实现的HTML5与原生混合型应用,
里面的HTML5实现了动画,音视频,语音录制,语音识别,本地文件和数据存储,网络同步等多个HTML5特性的使用。在各大应用市场都可以下载这款应用(应用宝市场:android.app.qq.com/myap)。而且还有一个特色是这个应用真正实现了原生与HTML5的同步,即所有的安卓应用功能都能在网页上同步呈现。用CHROME浏览器访问web.okkouyu.com,你会发现里面的内容与手机上安装的功能完全一致。 先不说别的,webapp顶部一个bar,浏览器上面又算一个bar,看起来都是怪怪的。
相关标签: HTML Web