目录
回复内容:
首页 web前端 H5教程 如何看待html5在移动端的未来?

如何看待html5在移动端的未来?

Jun 07, 2016 am 08:43 AM

回复内容:

首先反对下现在的一楼的答案,原生效果非常容易实现,他说很艰难我只能怀疑他到底搞清楚HTML5 的API了没,他的比喻
用一堆离散的石头去搭细腻的雕塑一样痛苦不堪。
这一点我是认同的,但是我不认为前端领域现有的工具和技术是离散的石头。
现在的适用于移动端的前端框架类似:
  • Ionic: Advanced HTML5 Hybrid Mobile App Framework
  • Reapp - Hybrid apps, fast
已经非常完善与强大了,效果非常接近原生应用(不包含性能),开发成本也非常低,构建/迭代起来非常快。

最最重要的是如果不想花时间熟悉API,并且花时间对自己目标的系统的各种特性加以了解,那么是无法避免的要掉到一些坑里面爬不出来的。

再说我的观点:


移动应用的未来取决于移动设备芯片性能提升的有多快。

我在2013年的时候读到一篇非常有意思的文章:
为什么移动Web应用程序很慢

这篇文章里面有几个有意思的观点非常值得探讨:

  1. 在Benchmark中,Javascript 的速度比原生代码慢4.5 ~ 5倍
如何看待html5在移动端的未来?
如果你在想“如果是计算密集型(CPU-bound)的功能,本地代码比Nitro JS快多少呢”,那么答案是差不多5倍。这个结果大致上和Benchmark Game在x86/GCC/V8上面的结果一致,那里面的GCC/x86通常比V8/x86快2到9倍。所以结果大致上是正确的,无论是ARM还是x86。
这里关键是要理解4.5 ~ 5倍是什么程度的差距:
如果你的C程序运行了10ms,那么一个运行50ms的JavaScript程序差不多是接近C的速度了。如果你的C程序运行了10s,那么一个运行了50s的JavaScript程序对于大多数正常人来说很可能就不是接近C的速度了。

2. x86架构的CPU比ARM 架构的 CPU 快 10倍左右

这个数据来自于作者2013年写文章的时候,对比的是 iPhone 5 和 Macbook Pro. 恰巧我手上就有一部 iPhone 5,它在现在(2015年中) 运行相当复杂的web app都可以达到令人满意的流畅度。
下面是广告:
我测试过
  • weixin.teambition.com/ (需要关注teambition 微信公众号,在微信内访问)
  • 石墨 - 最优美的在线协作文档
  • onedrive.live.com/
这些webapp 基本是我能找到的市面上最复杂的mobile web app,但是离它们各自的desktop web app version 体验和复杂度都还差很远(不好具体的量化,但是可以很好的反映出desktop 和 mobile 10倍的性能差距)。而实际上,这些应用的 desktop version 的功能和体验,已经完全不输 native app了,这说明在一些场景下(在线协同文档编辑这个复杂量级及其以下的场景),webapp 已经可以差不多达到 native app 的性能以及体验了。

3. ARM 在短时间内性能很难追上 x86

作者在2013年引用了很多东西来证明这一点,但是到现在其实我还不能确定 短时间 有多短,因为按照目前的情况来看: Apple Nvidia Qualcomm 的 ppt 越写越厉害。
但我对硬件其实也没有很深入的研究,没有找到客观数据也不好确定 ARM 从13 年到15 年到底有多大的性能提升。
我的观点是,摩尔定律可能还会在一段时间内是正确的,但是性能提升的比例是否和晶体管数量增加的比例成正比值得怀疑。

4. 由于GC的存在,内存对性能的影响远比硬件性能差距带来的影响大的多的多

这个情况可能在近几年得到改善,因为现在甚至出现了 4GB RAM 的 Android 设备和 2GB RAM的 iOS设备。
这是文中最重要的一幅图:
如何看待html5在移动端的未来?

Y轴是垃圾回收所用的时间,X轴是“相对的内存足迹”,相对于什么?相对于所需的最小内存

这张图想说明的是,“如果你有6倍以上你实际需要的内存,那么使用垃圾回收是没有问题的。但是如果你只有小于4倍你实际需要的内存,那么灾难就要降临了。”


特别的,如果垃圾回收时系统拥有5倍于所需的内存时,它的运行时性能差不多甚至是超过显式内存管理。但是,垃圾回收的性能在必须使用小堆(small heap)的情况下会出现急剧下降。如果有3倍于所需的内存的话,它会跑得慢17%;如果只有2倍于所需的内存的话,会慢70%。垃圾回收比物理内存的换页更容易受到内存不足的影响。在这种情况下,我们所测试的所有垃圾回收器相对于手动内存管理都出现指数级的性能下降
众所周知 Javascript 是无法手动管理内存的,这也意味着,在内存足够大(5倍于 webapp 运行时所需内存)之前,我们无法做任何事情来对这种影响进行优化。

5. Javascript 的实现在近几年 (2011 ~ 2013 ) 并没有本质的性能提升

这里是作者测试的 Chrome 10 vs Chrome 27

如何看待html5在移动端的未来?
在我看来,在这个期间的性能提升还是太小,不足以支撑JS马上就会足够快这样的论调。然而,要说我过分强调这个情况也没错,毕竟JavaScript的计算密集型操作的确在发生变化。但是推我来说,这些数字可以得出更大的推断:这些性能提升的幅度还不足以在一定时间之内使得JavaScript的速度赶上原生代码。你需要性能达到2-9倍才能跟LLVM竞争。这些提升是好的,但还不足够好。
Javascript 引擎的性能提升确实不足以支撑 “Javascript 马上就能变得足够快” 这一假设。

6. 电池技术的发展至关重要

这一点其实是最好理解的,性能的提升带来的是功耗的增加。


总结一下我的看法:
1. 移动 web app(提问是html 5,我认为不太准确)的发展主要受到性能的制约,目前已经有足够复杂的 Desktop Web App 实现,例如Google docs, ondrive , Teambition(广告)这样,受制于性能的差距,移动端现在还没有条件实现这么复杂的 web app.


2. 移动web app 可能很快(我的预测是3~5年)就会达到目前 (2015年)的复杂度,预测这个时间是因为我了解到在最新版本的Android 中 搭载 V8 引擎的 Chrome 将会成为默认浏览器(非常重要),以及 64 位 ARM 处理器的快速发展(更多大内存的移动设备将会出现).


3. 前端技术的高速发展足以支撑 mobile web app能够做到足够复杂(已经有不少了),在工程化方面前端已经开始慢慢的缩小和一些有着悠久历史语言的差距了(还是差很远)。


4. mobile web app 很有前途,瓶颈不在html css Javascript 身上,每种语言都有缺陷,足够了解就可以避免踩坑。


另外,建议大家读一下引用的文章,写的非常严谨:为什么移动Web应用程序很慢 适合内容型(也就是传统网站)应用。稍微复杂一些的,都不适合。以后也不适合。

我现在用HTML5开发移动应用,也不复杂,但是比预想的麻烦很多,效果和成本都比开发两套原生程序差。

这跟HTML、JavaScript、CSS的先天缺陷有关。就像用一堆离散的石头去搭细腻的雕塑一样痛苦不堪。

尤其是客户要求实现原生一样的效果就更痛苦了。比如客户要求移动WebApp实现和iOS日期选择框一样的效果,在安卓上也一样效果。 从各个平台来看,移动端是趋势,这也是为什么这几年移动互联网创业火热的原因,就连菜市场卖菜的大妈都要搞自己的app,当然是不是泡沫就另当别论了。我觉得H5的发力点就是在app,H5+js+css-->打包app,简洁、高效、一次开发多平台适用的这种模式将会被越来越多的人接受。HBuilder,AppCan这些整体解决方案的出现,也能让那些嘲笑H5App性功能障碍的native高富帅们消停会了,phonegap+sencha已成过去时,前端的福音已经到来。
我在看老周的《方法论》时,他有一个观点我特别认同,‘‘你永远打不败的竞争对手就是趋势,趋势一旦爆发,就不会是一种线性发展,它会积蓄力量于无形,最后突然爆发成雪崩效应,任何不愿意改变的力量都会被毁灭,被市场边缘化’’,H5就是未来的趋势,虽然发展有些曲折,但你看看w3c不断推出的H5特性,各大公司的招聘启示,就连我卖茶叶蛋的同学都知道H5game...,你知道为什么所有的前端都对ie嗤之以鼻吗?难道是因为界面丑吗?图样图森破! APP html5化是一个趋势 微信 支付宝等超级APP 非核心功能基本上都用html5实现的 这种优势就是更新快 部署快 不需要用户升级APP 不需要苹果审核 但如果html5想要完全替代原生APP 个人不看好 H5的生态圈正在完善,引爆H5是迟早的事,拭目以待。 首先,移动是未来的趋势,移动可以让人们充分利用碎片时间,满足各种需求。


其次,html5是一种实现移动应用的方式,随着device API的丰富,给了h5各种可能性

那么,html5可以做什么?
大家讨论的比较多的是html5和native的性能对比,开发速度,维护,升级等方面的问题,但这些在我看来不是大问题,随着硬件的提升,相信html5的性能会越来越好。我比较看好的是device API在未来可以应用的空间:
1. 利用重力感应开发物理游戏
2. 陀螺仪实现摇一摇
3. video和audio开发语音识别和视频通话、虚拟现实、增强现实
4. 湿度和温度传感器可以开发智能家居
5. webnfc可以用来开发近场通讯支付
6. 震动API
7. 距离传感器
8. 噪音检测


未来还会有更多的传感器API实现,相信这将会让前端开发者有机会开发智能应用。 前景还是不错的。一是手机的CPU和GPU越来越强,二是在iOS8和安卓5.0以上,所有应用程序内嵌的Web浏览器控件都得到了跟原生浏览器一样的性能支持,这是个引爆点。 开发语言降低门槛和人类可续技术进度都是一定会发生的事情。
为什么有很多名人让人们警惕人工智能? - 科技
看了这篇文章你就能感觉到 了。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用视口元标记来控制移动设备上的页面缩放? 如何使用视口元标记来控制移动设备上的页面缩放? Mar 13, 2025 pm 08:00 PM

本文讨论了使用视口元标记来控制移动设备上的页面缩放,重点是宽度和初始尺度之类的设置,以获得最佳响应和性能。

如何将音频添加到我的HTML5网站上? 如何将音频添加到我的HTML5网站上? Mar 10, 2025 pm 03:01 PM

本文解释了如何使用< audio>元素,包括用于格式选择的最佳实践(MP3,OGG Vorbis),文件优化和JavaScript控件用于播放。 它强调使用多个音频f

如何使用HTML5和JavaScript创建互动游戏? 如何使用HTML5和JavaScript创建互动游戏? Mar 10, 2025 pm 06:34 PM

本文使用JavaScript详细介绍了创建Interactive HTML5游戏。 它涵盖了游戏设计,HTML结构,CSS样式,JavaScript逻辑(包括事件处理和动画)以及音频集成。 必需的JavaScript库(Phaser,Pi

如何将HTML5表单用于用户输入? 如何将HTML5表单用于用户输入? Mar 10, 2025 pm 02:59 PM

本文解释了如何创建和验证HTML5表格。 它详细介绍了>元素,输入类型(文本,电子邮件,编号等)和属性(必需,模式,最小,最大)。 HTML5的优势比旧方法形成

如何使用HTML5页面可见性API检测页面何时可见? 如何使用HTML5页面可见性API检测页面何时可见? Mar 13, 2025 pm 07:51 PM

本文讨论了使用HTML5页面可见性API来检测页面可见性,提高用户体验并优化资源使用情况。关键方面包括暂停媒体,减少CPU负载以及基于可见性变化管理分析。

如何使用地理位置API处理用户位置隐私和权限? 如何使用地理位置API处理用户位置隐私和权限? Mar 18, 2025 pm 02:16 PM

本文讨论了使用GeOlocation API管理用户位置隐私和权限,并强调要求权限,确保数据安全性并遵守隐私法律的最佳实践。

如何将HTML5拖放API用于交互式用户界面? 如何将HTML5拖放API用于交互式用户界面? Mar 18, 2025 pm 02:17 PM

本文介绍了如何使用HTML5拖放API来创建交互式用户界面,详细介绍了使元素可拖动的步骤,处理关键事件并通过自定义反馈来增强用户体验。它还讨论了一个常见的陷阱

如何使用HTML5 Websockets API进行客户端和服务器之间的双向通信? 如何使用HTML5 Websockets API进行客户端和服务器之间的双向通信? Mar 12, 2025 pm 03:20 PM

本文解释了HTML5 Websockets API,用于实时双向客户服务器通信。 它详细详细介绍了客户端(JavaScript)和服务器端(Python/Flask)的实现,以应对可伸缩性,状态管理,一个挑战

See all articles