過去這些年,HTML5幾乎已經(jīng)徹底改變了PC 互聯(lián)網(wǎng)甚至移動互聯(lián)網(wǎng)的格局。
縱觀 HTML5 的發(fā)展史,一波三折,有用戶的需求在推動,有技術(shù)開發(fā)者的需求在推動,更有巨大的商業(yè)利益在推動。如今,隨著4G的普及以及手機(jī)硬件性能的飛速發(fā)展,HTML5一直被詬病的性能問題逐漸被淡化,HTML5也逐漸被人們接受成為信息和應(yīng)用的載體。過去的2015年,HTML5的確得到蓬勃的發(fā)展,尤其在微信朋友圈的營銷上。然而,HTML5要走出微信朋友圈,在各種場景下得到廣泛的使用,還有很長一段路要走。接下來我們來分析一下HTML5面臨的一些挑戰(zhàn)。
HTML5并非聽上去那么完美
業(yè)界一直都說HTML5的殺手級武器是跨平臺,意思是,相比原生APP要針對不同手機(jī)操作系統(tǒng)做開發(fā),HTML5只需一次開發(fā),就可以在所有操作系統(tǒng)上運行。
HTML5 是唯一一個通吃 PC、Mac、iPhone、iPad、Android、Windows Phone 等主流平臺的跨平臺語言。Java 和 Flash 都曾夢想這個位置,但都夢斷于 iOS。此時人們紛紛開始研究基于 HTML5 開發(fā)跨平臺手機(jī)應(yīng)用,很多人都認(rèn)為,原生應(yīng)用只是過渡,就像當(dāng)年從 C/S 結(jié)構(gòu)轉(zhuǎn)變?yōu)?B/S 結(jié)構(gòu)一樣。而且學(xué)習(xí) Objective-C 和 Java 很費勁,既然會網(wǎng)頁開發(fā),為何不試試 HTML5。
然而,HTML5畢竟只是一個技術(shù)標(biāo)準(zhǔn),所以跨平臺確實跨平臺,但只是理論上的跨平臺。
在實際應(yīng)用過程中,大家會發(fā)現(xiàn)各種瀏覽器之間存在各種各樣的差異性, 導(dǎo)致HTML5頁面在不同瀏覽器上顯示的效果不一致,于是要經(jīng)過大量的兼容性測試和修復(fù)才能真正實現(xiàn)“一次開發(fā),所有平臺完美運行”的理想,而這樣的工作量并不小。對此,大家可能有疑問,HTML5不是國際標(biāo)準(zhǔn)么,瀏覽器都遵守HTML5國際標(biāo)準(zhǔn)來開發(fā)的話,不應(yīng)該出現(xiàn)不一致???其實,這里面有多方面的原因:
1、HTML5的功能是個巨大的集合,瀏覽器產(chǎn)商不可能在一個版本開發(fā)周期中實現(xiàn)所有的HTML5能力,每個版本都只能開發(fā)一小部分子集。不同的瀏覽器產(chǎn)商會根據(jù)自己對市場的判斷以及公司的戰(zhàn)略,制定自己的開發(fā)路線圖,所以自然會出現(xiàn)不同瀏覽器支持的HTML5功能集合不一致;
2、W3C一直把制定的標(biāo)準(zhǔn)文檔定義成“Recommendation(推薦)”,也就是說,HTML5并不是一個強(qiáng)制的標(biāo)準(zhǔn)。如果開發(fā)者寫的HTML網(wǎng)頁不符合標(biāo)準(zhǔn),瀏覽器依然能夠顯示。事實上,互聯(lián)網(wǎng)上有95%以上的網(wǎng)頁都是不符合W3C標(biāo)準(zhǔn)的。 結(jié)果就是,網(wǎng)頁中有大量的異常情況,需要瀏覽器自己去修復(fù)。如何修復(fù)不標(biāo)準(zhǔn)的網(wǎng)頁并沒有一個固定做法,所以不同瀏覽器產(chǎn)商都有自己的一套解決方式。這也導(dǎo)致了各個瀏覽器雖然都是按照相同的W3C來開發(fā)的,但是最后的代碼算法是不同的,繼而導(dǎo)致了顯示結(jié)果不一致;
3、互聯(lián)網(wǎng)是個高速發(fā)展的市場,每個瀏覽器產(chǎn)商都要為適應(yīng)新的市場變化開發(fā)具有足夠創(chuàng)新升級版本。然而向前創(chuàng)新和向后兼容往往是矛盾的,所以瀏覽器產(chǎn)商在新版本中可能會做出一些巨大的代碼調(diào)整。然而,瀏覽器是安裝在用戶手機(jī)上客戶端程序,用戶有權(quán)利選擇是否進(jìn)行升級。這就導(dǎo)致了即使是同一個產(chǎn)商的瀏覽器,你還得為它的不同版本做相應(yīng)的兼容性修復(fù)。這一點相信大家在PC時代的IE瀏覽器上都吃過很多苦頭,每個前端開發(fā)者都需要為 IE6、IE7等不同版本做出大量的工作;
4、今天的手機(jī)操作系統(tǒng)是個非常碎片化的市場。安卓的開發(fā)性為它帶來了高速的市場覆蓋,但同時也帶來了極度碎片的版本分支。幾乎每個手機(jī)產(chǎn)商都會做一些定制,以實現(xiàn)自己在市場上的差異化。小米有MIUI、華為有EMUI、三星有TouchWiz等等。手機(jī)操作系統(tǒng)自帶的默認(rèn)瀏覽器也會做相應(yīng)的定制,因此導(dǎo)致HTML5網(wǎng)頁在不同手機(jī)操作系統(tǒng)的默認(rèn)瀏覽器上顯示不一致。由于很多第三方App內(nèi)嵌瀏覽器一般都直接調(diào)用了操作系統(tǒng)自帶的瀏覽器內(nèi)核,從而導(dǎo)致網(wǎng)頁在了不同手機(jī)上顯示效果不一樣,這點在混合App(Hybrid App)中體現(xiàn)尤為明顯。
如何解決HTML5在實際應(yīng)用中的兼容性問題
上面提到了諸多HTML5不能真正跨平臺的原因,可能很多朋友們就要問了,如何解決?其實解決HTML5在實際應(yīng)用中的兼容性難題,真正實現(xiàn)HTML5的跨平臺,有兩個途徑:
1、通過HTML5的底層框架來屏蔽不同瀏覽器的兼容問題,所有的HTML5應(yīng)用在框架之上來開發(fā)。像國外的Bootstrap、jQuery UI等都是很好的UI框架,基于他們之上來開發(fā)可以減少大量的兼容性調(diào)試工作。 當(dāng)然,這些國外的UI框架都是針對國外的審美觀、國外的主流瀏覽器和操作系統(tǒng),國產(chǎn)的Amaze UI 也是類似的框架,但是針對國內(nèi)網(wǎng)民的樣式喜好以及主流移動瀏覽器或帶有瀏覽器功能的App(比如微信)做了大量的調(diào)整優(yōu)化;
2、通過讓用戶使用自有內(nèi)核的固定瀏覽器,這樣就不存在兼容多個瀏覽器或者操作系統(tǒng)的問題了。然而,對于普遍的大眾網(wǎng)民,沒有任何一個企業(yè)或者是組織強(qiáng)制大家使用哪一款瀏覽器。但是,在企業(yè)內(nèi)部辦公的場景中,這種方式是比較可取的。
一方面,公司的員工數(shù)目有限,一般就幾千人上萬人,不像互聯(lián)網(wǎng)好幾億網(wǎng)民,所以IT開發(fā)人員花大量時間去做兼容性測試和修復(fù)是一件投入產(chǎn)生比很低的事情,對公司效益沒有任何幫助;另一方面,市面上各種瀏覽器的安全能力參差不齊,讓員工自由選擇瀏覽器是一件風(fēng)險很大的事情,極有可能會導(dǎo)致企業(yè)數(shù)據(jù)泄露或者木馬入侵。因此讓員工使用公司經(jīng)過安全認(rèn)證的固定瀏覽器,一方面大幅度減輕IT開發(fā)的工作量,另外一方面有效保障企業(yè)數(shù)據(jù)安全,事半功倍。
HTML5作為一種開發(fā)語言,最終都是需要運行在瀏覽器上的。因此,要使HTML5的優(yōu)勢充分發(fā)揮在應(yīng)用在移動辦公方面,必須要有一個帶自有內(nèi)核并且專門針對企業(yè)的安全管理優(yōu)化的瀏覽器。
雖然HTML5跨平臺的能力受限于操作系統(tǒng)的碎片化,仍然顯得不完美,但是其天然的跨平臺能力已經(jīng)在很大程度上為開發(fā)者們帶來了巨大的價值。
原因不言而喻,對于開發(fā)者而言,除了iOS,安卓,開發(fā)者為什么不愿意再開發(fā) WP 版本,很多時候是因為工作量太大,除了版本適配,分辨率調(diào)整等,一旦有新版本推出,在原生 App 中開發(fā)者不得不等待多達(dá)兩周時間去接受審核,跨平臺在多屏?xí)r代給開發(fā)者非常痛苦的體驗,人們都期待當(dāng)年 Java 的一次編譯處處運行的理想情況。而HTML5 目前正在扮演這樣一個開發(fā)者救星的角色,這里面只需要有一個統(tǒng)一的企業(yè)級瀏覽器就可以了。