过去这些年,HTML5几乎已经彻底改变了PC 互联网甚至移动互联网的格局。
纵观 HTML5 的发展史,一波三折,有用户的需求在推动,有技术开发者的需求在推动,更有巨大的商业利益在推动。如今,随着4G的普及以及手机硬件性能的飞速发展,HTML5一直被诟病的性能问题逐渐被淡化,HTML5也逐渐被人们接受成为信息和应用的载体。过去的2015年,HTML5的确得到蓬勃的发展,尤其在微信朋友圈的营销上。然而,HTML5要走出微信朋友圈,在各种场景下得到广泛的使用,还有很长一段路要走。
接下来我们来分析一下HTML5面临的一些挑战。
HTML5并非听上去那么完美
业界一直都说HTML5的杀手级武器是跨平台,意思是,相比原生APP要针对不同手机操作系统做开发,HTML5只需一次开发,就可以在所有操作系统上运行。
HTML5 是唯一一个通吃 PC、Mac、iPhone、iPad、Android、Windows Phone 等主流平台的跨平台语言。Java 和 Flash 都曾梦想这个位置,但都梦断于 iOS。此时人们纷纷开始研究基于 HTML5 开发跨平台手机应用,很多人都认为,原生应用只是过渡,就像当年从 C/S 结构转变为 B/S 结构一样。而且学习 Objective-C 和 Java 很费劲,既然会网页开发,为何不试试 HTML5。
然而,HTML5毕竟只是一个技术标准,所以跨平台确实跨平台,但只是理论上的跨平台。
在实际应用过程中,大家会发现各种浏览器之间存在各种各样的差异性, 导致HTML5页面在不同浏览器上显示的效果不一致,于是要经过大量的兼容性测试和修复才能真正实现“一次开发,所有平台完美运行”的理想,而这样的工作量并不小。对此,大家可能有疑问,HTML5不是国际标准么,浏览器都遵守HTML5国际标准来开发的话,不应该出现不一致啊?
其实,这里面有多方面的原因:
1)HTML5的功能是个巨大的集合,浏览器产商不可能在一个版本开发周期中实现所有的HTML5能力,每个版本都只能开发一小部分子集。 不同的浏览器产商会根据自己对市场的判断以及公司的战略,制定自己的开发路线图,所以自然会出现不同浏览器支持的HTML5功能集合不一致;
2)W3C一直把制定的标准文档定义成“Recommendation(推荐)”,也就是说,HTML5并不是一个强制的标准。如果开发者写的HTML网页不符合标准,浏览器依然能够显示。事实上,互联网上有95%以上的网页都是不符合W3C标准的。 结果就是,网页中有大量的异常情况,需要浏览器自己去修复。如何修复不标准的网页并没有一个固定做法,所以不同浏览器产商都有自己的一套解决方式。这也导致了各个浏览器虽然都是按照相同的W3C来开发的,但是最后的代码算法是不同的,继而导致了显示结果不一致;
3)互联网是个高速发展的市场,每个浏览器产商都要为适应新的市场变化开发具有足够创新升级版本。然而向前创新和向后兼容往往是矛盾的,所以浏览器产商在新版本中可能会做出一些巨大的代码调整。然而,浏览器是安装在用户手机上客户端程序,用户有权利选择是否进行升级。这就导致了即使是同一个产商的浏览器,你还得为它的不同版本做相应的兼容性修复。这一点相信大家在PC时代的IE浏览器上都吃过很多苦头,每个前端开发者都需要为 IE6、IE7等不同版本做出大量的工作;
4)今天的手机操作系统是个非常碎片化的市场。安卓的开发性为它带来了高速的市场覆盖,但同时也带来了极度碎片的版本分支。几乎每个手机产商都会做一些定制,以实现自己在市场上的差异化。小米有MIUI、华为有EMUI、三星有TouchWiz等等。手机操作系统自带的默认浏览器也会做相应的定制,因此导致HTML5网页在不同手机操作系统的默认浏览器上显示不一致。由于很多第三方App内嵌浏览器一般都直接调用了操作系统自带的浏览器内核,从而导致网页在了不同手机上显示效果不一样,这点在混合App(Hybrid App)中体现尤为明显。
如何解决HTML5在实际应用中的兼容性问题?
上面提到了诸多HTML5不能真正跨平台的原因,可能很多朋友们就要问了,如何解决?其实解决HTML5在实际应用中的兼容性难题,真正实现HTML5的跨平台,有两个途径:
1)通过HTML5的底层框架来屏蔽不同浏览器的兼容问题,所有的HTML5应用在框架之上来开发。像国外的Bootstrap、jQuery UI等都是很好的UI框架,基于他们之上来开发可以减少大量的兼容性调试工作。 当然,这些国外的UI框架都是针对国外的审美观、国外的主流浏览器和操作系统,国产的Amaze UI 也是类似的框架,但是针对国内网民的样式喜好以及主流移动浏览器或带有浏览器功能的App(比如微信)做了大量的调整优化;
2)通过让用户使用自有内核的固定浏览器,这样就不存在兼容多个浏览器或者操作系统的问题了。 然而,对于普遍的大众网民,没有任何一个企业或者是组织强制大家使用哪一款浏览器。但是,在企业内部办公的场景中,这种方式是比较可取的。一方面,公司的员工数目有限,一般就几千人上万人,不像互联网好几亿网民,所以IT开发人员花大量时间去做兼容性测试和修复是一件投入产生比很低的事情,对公司效益没有任何帮助;另外一方面,市面上各种浏览器的安全能力参差不齐,让员工自由选择浏览器是一件风险很大的事情,极有可能会导致企业数据泄露或者木马入侵。因此让员工使用公司经过安全认证的固定浏览器,一方面大幅度减轻IT开发的工作量,另外一方面有效保障企业数据安全,事半功倍。
说到这里,就不得不说一下专门的企业级浏览器Enterplorer,这是云适配自主创新并且拥有独立内核的企业级浏览器,专门为企业移动办公使用场景而开发。一方面它的跨平台的自有内核能够屏蔽安卓操作系统之间的差异性,让你的HTML5应用无论运行在什么安卓手机上都有一致的表现,真正实现“一次开发、到处运行”;另外一方面,Enterplorer内核为企业做了完备的安全加密(包括:缓存加密、Cookie加密、下载文件加密等)以及后台管理(包括:设备管理、权限管理、远程数据擦除等),不但保证企业的数据安全,而且让企业管理员可以做实时的统一管理。
不管怎样说,虽然HTML5跨平台的能力受限于操作系统的碎片化,仍然显得不完美,但是其天然的跨平台能力已经在很大程度上为开发者们带来了巨大的价值。原因不言而喻,对于开发者而言,除了iOS,安卓,开发者为什么不愿意再开发 WP 版本,很多时候是因为工作量太大,除了版本适配,分辨率调整等,一旦有新版本推出,在原生 App 中开发者不得不等待多达两周时间去接受审核,跨平台在多屏时代给开发者非常痛苦的体验,人们都期待当年 Java 的一次编译处处运行的理想情况。而HTML5 目前正在扮演这样一个开发者救星的角色,这里面只需要有一个统一的企业级浏览器就可以了。