你該不該給HTML5投懷送抱?
回答這個問題,要分成兩步。
你在Web端還是移動端?
“如果是Web端,100%保證晴天;如果是移動端,看下一條。”
對于Web端而言,HTML5將是一個完整的操作系統(tǒng)。它在不同的底層系統(tǒng)之上,借助于瀏覽器的實現(xiàn),封裝了統(tǒng)一標準的API允許開發(fā)的程序跨設(shè)備(PC/Mac/智能手機),跨平臺 (Windows/Mac OS/iOS/Android等等)的運行。
最大的好處就是一處開發(fā)、多處使用。審核新版本的發(fā)布也不用看蘋果爺爺?shù)哪樕苯釉诜?wù)器端推送新代碼就好了。對于開發(fā)人員而言,這對效率的提高,有著致命的誘惑,像“你們是先開發(fā)Web,還是移動”之類的問題,將愉快的失去意義。
對于Web端的開發(fā)而言,你可以盡情的享受HTML5這種統(tǒng)一封裝帶來的好處,唯一要等待的就是瀏覽器對其支持的完善,但這種完善的到來,無疑是確定的。
而正是這種好處,讓很多創(chuàng)業(yè)者如此關(guān)注它并押上公司的未來。
但對于移動端而言,卻沒有那么簡單純粹。
如果是移動端,取決于你的產(chǎn)品形態(tài),因為你的產(chǎn)品需要的功能可能永遠也無法在移動端的瀏覽器的HTML5實現(xiàn)中被很好的實現(xiàn)。
“App Store上超過50%的應(yīng)用已經(jīng)是用HTML5來開發(fā),將來可能90%的應(yīng)用會是HTML5,而那10%,可能永遠也不適合HTML5”。
HTML5的天氣預(yù)報中,是局部有小雨。
苦逼的開發(fā)者們,你站的地是晴天還是下雨,該如何判斷呢?
先介紹一個工具,動態(tài)檢測瀏覽器對HTML支持程度的ringmark.io。它不僅可以測試你當前的瀏覽器,你也可以在右下角的“Choose a different device”當中選擇不同的移動端的操作系統(tǒng)版本來看看它們對于HTML5的支持程度。
如圖所示,它將測試你當前的瀏覽器,將HTML5的規(guī)格(spec)當中描述的功能的實現(xiàn)程度會一一測試出來。 不同的ring(環(huán))代表了不同的功能等級。 已經(jīng)實現(xiàn)的為綠色,沒實現(xiàn)的是灰色。發(fā)現(xiàn)灰色很多的朋友,要換瀏覽器啰。
回到剛開始的那個問題,F(xiàn)acebook為什么在iOS App的實現(xiàn)上棄HTML5選Object C,就在于Facebook App重度依賴照片,而照片分享,瀏覽相關(guān)的功能極度依賴CSS Overflow Scrolling,這一點,iOS上的瀏覽器支持極度不給力。而換成Object C的Native Implementation之后,速度快上了2倍之多。
好,有朋友可能會問,可能在將來瀏覽器對這些功能的支持會得到改善呢? 那時候不就可以了。
事實是,那一天可能永遠也不會到來。
因為瀏覽器的編程模型還是90年代流行的單進程單線程(single process single thread),但原生實現(xiàn)(比如用Object C)的APP可以用多線程。這一點帶來的作用是致命的。
移動端編寫APP,可以使用多個線程,第一個線程,被稱作主線程(main thread),編程的第一原則是don’t do heavy work on main thread。通常只讓它處理UI事件等,其他重度的工作讓其他背景線程來做。
但瀏覽器只有一個線程,所有的事情都是它干。瀏覽器編程一上來就破了第一原則。
在臺式機上,瀏覽器編程還沒有太多問題,因為夠快但在移動端,這個弊端很明顯。
我來舉個例子,比如你在用瀏覽器看朋友的照片,你發(fā)的評論被發(fā)到服務(wù)器端,此時你接著用手指往下拉屏; 此時,服務(wù)器端返回信息,評論發(fā)布成功,瀏覽器中唯一的線程可能停止處理屏幕滾動(scrolling)而來處理服務(wù)器的返回信息,由于移動設(shè)備的處理器 (尤其單進程瀏覽器只能用上單核,即使是多核手機!)和內(nèi)存(處于省電原因使用低耗電的DDR1,這一點和現(xiàn)在PC使用的DDR3相差甚遠)的不給力,完全可能造成滾動處理的不連續(xù)。通常手機的刷新率是60MHZ,即每一幀不超過15ms; 如果處理的延時大大超過15ms,那么就會出現(xiàn)跳幀,肉眼就能看出來。
這是交互操作(比如拉動,滾動等)很多的APP,如果是由HTML5實現(xiàn),出現(xiàn)拉動的時候停在那里一個很重要的原因。
所以,如果你的APP是相對靜態(tài)的,不需要很多對于照片,多點觸摸,多向拉動的處理,那完全可以用HTML5來實現(xiàn); 如果不是,比如信息流的展示,游戲等等,還是乖乖的用原生的去實現(xiàn)。
HTML5究竟在等什么?
HTML5實現(xiàn)已經(jīng)是50%以上的iOS APP的選擇。我相信處理能力的提升,將讓移動設(shè)備的處理不給力帶來的體驗底下得到改善。而這種處理能力的提高,很大程度上將取決于低耗電高性能CPU/內(nèi)存的出現(xiàn),或者電池技術(shù)的極大改善。
在這一天到來之前,有可能10%的APP無法應(yīng)用HTML5來實現(xiàn)。