你該不該給HTML5投懷送抱?

回答這個(gè)問(wèn)題,要分成兩步。

你在Web端還是移動(dòng)端?

“如果是Web端,100%保證晴天;如果是移動(dòng)端,看下一條。”

對(duì)于Web端而言,HTML5將是一個(gè)完整的操作系統(tǒng)。它在不同的底層系統(tǒng)之上,借助于瀏覽器的實(shí)現(xiàn),封裝了統(tǒng)一標(biāo)準(zhǔn)的API允許開(kāi)發(fā)的程序跨設(shè)備(PC/Mac/智能手機(jī)),跨平臺(tái) (Windows/Mac OS/iOS/Android等等)的運(yùn)行。

最大的好處就是一處開(kāi)發(fā)、多處使用。審核新版本的發(fā)布也不用看蘋果爺爺?shù)哪樕苯釉诜?wù)器端推送新代碼就好了。對(duì)于開(kāi)發(fā)人員而言,這對(duì)效率的提高,有著致命的誘惑,像“你們是先開(kāi)發(fā)Web,還是移動(dòng)”之類的問(wèn)題,將愉快的失去意義。

對(duì)于Web端的開(kāi)發(fā)而言,你可以盡情的享受HTML5這種統(tǒng)一封裝帶來(lái)的好處,唯一要等待的就是瀏覽器對(duì)其支持的完善,但這種完善的到來(lái),無(wú)疑是確定的。

而正是這種好處,讓很多創(chuàng)業(yè)者如此關(guān)注它并押上公司的未來(lái)。

但對(duì)于移動(dòng)端而言,卻沒(méi)有那么簡(jiǎn)單純粹。

如果是移動(dòng)端,取決于你的產(chǎn)品形態(tài),因?yàn)槟愕漠a(chǎn)品需要的功能可能永遠(yuǎn)也無(wú)法在移動(dòng)端的瀏覽器的HTML5實(shí)現(xiàn)中被很好的實(shí)現(xiàn)。

“App Store上超過(guò)50%的應(yīng)用已經(jīng)是用HTML5來(lái)開(kāi)發(fā),將來(lái)可能90%的應(yīng)用會(huì)是HTML5,而那10%,可能永遠(yuǎn)也不適合HTML5”。

HTML5的天氣預(yù)報(bào)中,是局部有小雨。

苦逼的開(kāi)發(fā)者們,你站的地是晴天還是下雨,該如何判斷呢?

先介紹一個(gè)工具,動(dòng)態(tài)檢測(cè)瀏覽器對(duì)HTML支持程度的ringmark.io。它不僅可以測(cè)試你當(dāng)前的瀏覽器,你也可以在右下角的“Choose a different device”當(dāng)中選擇不同的移動(dòng)端的操作系統(tǒng)版本來(lái)看看它們對(duì)于HTML5的支持程度。

HTML5的明天:局部有小雨

如圖所示,它將測(cè)試你當(dāng)前的瀏覽器,將HTML5的規(guī)格(spec)當(dāng)中描述的功能的實(shí)現(xiàn)程度會(huì)一一測(cè)試出來(lái)。 不同的ring(環(huán))代表了不同的功能等級(jí)。 已經(jīng)實(shí)現(xiàn)的為綠色,沒(méi)實(shí)現(xiàn)的是灰色。發(fā)現(xiàn)灰色很多的朋友,要換瀏覽器啰。

回到剛開(kāi)始的那個(gè)問(wèn)題,F(xiàn)acebook為什么在iOS App的實(shí)現(xiàn)上棄HTML5選Object C,就在于Facebook App重度依賴照片,而照片分享,瀏覽相關(guān)的功能極度依賴CSS Overflow Scrolling,這一點(diǎn),iOS上的瀏覽器支持極度不給力。而換成Object C的Native Implementation之后,速度快上了2倍之多。

好,有朋友可能會(huì)問(wèn),可能在將來(lái)瀏覽器對(duì)這些功能的支持會(huì)得到改善呢? 那時(shí)候不就可以了。

事實(shí)是,那一天可能永遠(yuǎn)也不會(huì)到來(lái)。

因?yàn)闉g覽器的編程模型還是90年代流行的單進(jìn)程單線程(single process single thread),但原生實(shí)現(xiàn)(比如用Object C)的APP可以用多線程。這一點(diǎn)帶來(lái)的作用是致命的。

移動(dòng)端編寫APP,可以使用多個(gè)線程,第一個(gè)線程,被稱作主線程(main thread),編程的第一原則是don’t do heavy work on main thread。通常只讓它處理UI事件等,其他重度的工作讓其他背景線程來(lái)做。

但瀏覽器只有一個(gè)線程,所有的事情都是它干。瀏覽器編程一上來(lái)就破了第一原則。

在臺(tái)式機(jī)上,瀏覽器編程還沒(méi)有太多問(wèn)題,因?yàn)閴蚩斓谝苿?dòng)端,這個(gè)弊端很明顯。

我來(lái)舉個(gè)例子,比如你在用瀏覽器看朋友的照片,你發(fā)的評(píng)論被發(fā)到服務(wù)器端,此時(shí)你接著用手指往下拉屏; 此時(shí),服務(wù)器端返回信息,評(píng)論發(fā)布成功,瀏覽器中唯一的線程可能停止處理屏幕滾動(dòng)(scrolling)而來(lái)處理服務(wù)器的返回信息,由于移動(dòng)設(shè)備的處理器 (尤其單進(jìn)程瀏覽器只能用上單核,即使是多核手機(jī)!)和內(nèi)存(處于省電原因使用低耗電的DDR1,這一點(diǎn)和現(xiàn)在PC使用的DDR3相差甚遠(yuǎn))的不給力,完全可能造成滾動(dòng)處理的不連續(xù)。通常手機(jī)的刷新率是60MHZ,即每一幀不超過(guò)15ms; 如果處理的延時(shí)大大超過(guò)15ms,那么就會(huì)出現(xiàn)跳幀,肉眼就能看出來(lái)。

這是交互操作(比如拉動(dòng),滾動(dòng)等)很多的APP,如果是由HTML5實(shí)現(xiàn),出現(xiàn)拉動(dòng)的時(shí)候停在那里一個(gè)很重要的原因。

所以,如果你的APP是相對(duì)靜態(tài)的,不需要很多對(duì)于照片,多點(diǎn)觸摸,多向拉動(dòng)的處理,那完全可以用HTML5來(lái)實(shí)現(xiàn); 如果不是,比如信息流的展示,游戲等等,還是乖乖的用原生的去實(shí)現(xiàn)。

HTML5究竟在等什么?

HTML5實(shí)現(xiàn)已經(jīng)是50%以上的iOS APP的選擇。我相信處理能力的提升,將讓移動(dòng)設(shè)備的處理不給力帶來(lái)的體驗(yàn)底下得到改善。而這種處理能力的提高,很大程度上將取決于低耗電高性能CPU/內(nèi)存的出現(xiàn),或者電池技術(shù)的極大改善。

在這一天到來(lái)之前,有可能10%的APP無(wú)法應(yīng)用HTML5來(lái)實(shí)現(xiàn)。

分享到

hanrui

相關(guān)推薦