最近,F(xiàn)acebook掌門人扎克伯格表示,F(xiàn)acebook在過去幾年中的最大錯誤在于對HTML5押注過多,忽視了原生應(yīng)用,同時他對HTML5的長期趨勢依然看好。針對扎克伯格的言論,國內(nèi)開發(fā)社區(qū)對此展開了廣泛的討論,其中不乏真知灼見。
張克軍認(rèn)為HTML5非常適合移動互聯(lián)網(wǎng),但是Facebook的用戶量太大,難以支持各種移動設(shè)備:
HTML5用于移動互聯(lián)網(wǎng)的解決方案無疑是最理想的,但問題在于當(dāng)前設(shè)備對HTML5的支持差異太大,Android2.3(189/500), iOS5.1(324/500)再加上并非完美支持,在Facebook這種用戶基數(shù)下,這么復(fù)雜的使用環(huán)境下,問題很多是必然的。Facebook在這上面押的注,我理解是試圖掃清這些障礙打造一個完美的HTMLl5移動平臺,或是期待用戶手機(jī)更快的更新?lián)Q代,但是兩年過去,沒有達(dá)到預(yù)期效果。
但是這并不說明HTML5不適合移動開發(fā)。在iOS5.x/iOS6上我相信一定能做出不遜于原生應(yīng)用體驗的應(yīng)用。只是更多的人還在用低端一些的設(shè)備。如果移動網(wǎng)站不是模仿原生應(yīng)用,從可用性出發(fā),保證性能,尤其內(nèi)容消費型產(chǎn)品,也不需要很復(fù)雜的交互,目前HTML5的方案是完全沒問題的。現(xiàn)在以及未來都會是Web site + Mobile site + Native APP共同組成一個完整的Multiscreen Ecosystems。
Facebook的工程師博客也說了擁抱原生應(yīng)用,并不是放棄HTML5,原生應(yīng)用中很多部分仍然是用HTML5做的。
Fenng認(rèn)為Fackbook反思HTML5的最可能原因是沒有提供更好的用戶體驗:
為什么 Facebook 過度在移動上壓注 HTML 5 是不對的?最大可能的原因或許就是性能的問題,沒有更好的速度就沒有更好的用戶體驗,而用戶體驗一直是扎克伯格最看重的東西。
扎克伯格從 Facebook 創(chuàng)建之初就認(rèn)識到,對 Facebook 這樣的的網(wǎng)絡(luò)服務(wù)而言,性能表現(xiàn)就是關(guān)鍵。假如向用戶傳送新頁面的速度開始減緩,那就是致命的一擊。技術(shù)的角度看,F(xiàn)acebook 一向在網(wǎng)站優(yōu)化上不遺余力,無論是 BigPipe 還是 HipHop for PHP, 這些不遺余力的優(yōu)化實踐以及技術(shù)創(chuàng)新為 Facebook 帶來了絕佳的用戶體驗,而移動端押注 HTML 5 則恰恰是無形中背離了 Facebook 的這一準(zhǔn)則。
iOS 原生應(yīng)用發(fā)布之后,瀏覽信息是原來的兩倍意味著什么?用戶會在意你用 HTML 5 開發(fā)還是用的本地原生應(yīng)用?絕大多數(shù)用戶都不在乎這個,甚至都不知道,用戶更關(guān)心的是“應(yīng)用的速度”,App 是否足夠快? 是否可以更流暢的閱讀信息,沒有人愿意在手機(jī)上等待某個應(yīng)用慢吞吞的打開,就這么簡單。
接下來面對 Facebook 的挑戰(zhàn)是能否像在 Web 產(chǎn)品上進(jìn)行的那些最佳實踐那樣也在移動產(chǎn)品上建立起更有效的研發(fā)機(jī)制,畢竟這是另外一個戰(zhàn)場,一個互聯(lián)網(wǎng)巨頭在移動領(lǐng)域是否還是絕對的統(tǒng)治者? 沒有人能知道。
事后諸葛亮一樣來評價這個事情的對錯本身并不重要,重要的是,我們是否可以從中學(xué)到某些教訓(xùn)?
對 HTML 5 來說,談不上是什么「打擊」,或許是好事情也說不定,讓更多人認(rèn)識 HTML 5 的優(yōu)點和缺點,而不是一窩蜂的沖上去。
我在去年這個時間曾經(jīng)說過這樣一句話“我的兩個固執(zhí)的觀點:1 HTML 5 不是移動開發(fā)的救星,至少現(xiàn)在不是;2 因為有 1 , 所以類似 PhoneGap 之類的解決方案還不靠譜,沒有銀彈。還需要再等 18 個月再看。”
現(xiàn)在看起來,還要再等 18 個月了。
Levski 認(rèn)為“如果是選擇一項技術(shù)作為平臺,用“押注”的心態(tài)去做,這個心態(tài)本身就是錯的。”
通過這個事件,我想能Facebook應(yīng)該反省的一件事是,像Facebook這樣的,包括華為等等大一些的技術(shù)性公司,他們最應(yīng)該擔(dān)心的平臺選擇問題是“受制于人”,這也是我想為什么Google要搞android,微軟要搞WP,而Nokia一開始想搞MeeGo。
HTML 5雖然是一個開放的體系,但是其首先遠(yuǎn)未達(dá)到成熟,其次Facebook在標(biāo)準(zhǔn)制定中的話語權(quán)并不夠大,所以從最后的結(jié)果來看,棄用它也是有一定理由的。
不過我覺得現(xiàn)在換用Native方式開發(fā)移動應(yīng)用也不算晚。對于Facebook來說,其移動應(yīng)用的價值主要還在于Facebook本身所提供內(nèi)容而不在于界面,同時移動平臺本身也有比較充分的文檔說明該如何開發(fā)高質(zhì)量Native代碼,所以應(yīng)該可以比較快速的利用Native代碼達(dá)到超越HTML5界面所帶來的使用體驗。
徐哲分析了Facebook采用HTML5的優(yōu)缺點:
優(yōu)點是,F(xiàn)acebook 作為一個 Web 起家的公司,已經(jīng)擁有大量的 HTML(5)人才,做用 HTML5 渲染的應(yīng)用可以有效利用現(xiàn)有人力資源和技術(shù)積累,項目起步輕快,進(jìn)展迅速。另外對于排版有復(fù)雜要求的應(yīng)用,拿 HTML5 作為渲染引擎比自己寫一套原生的解決方案出來要方便、通用得多。HTML5 還有一個很誘人的特性:跨平臺支持。看上去很美,做一個 Web App 就能搞定所有平臺,還不用學(xué)那么多種編程語言。
缺點是,真正做過跨平臺的人都知道,一套代碼打天下其實是癡人說夢(做游戲的同學(xué)日子要好過些)。能夠一套代碼搞定所有平臺的應(yīng)用,通常都是在哪個平臺上都不好用的應(yīng)用。就算是 Web App 也一樣,例如為不同分辨率、DPI 的機(jī)器做優(yōu)化這件事兒就不能省。其次,目前的主流移動瀏覽器渲染 HTML5、執(zhí)行 Javascript 還是不夠快。哪怕在支持 Nitro Javascript Engine 的 Mobile Safari 上,載入的 js framework 稍微重點兒也卡,更何況在不支持 Nitro 的 UIWebView 上呢。所以性能是純 HTML5 應(yīng)用最大的軟肋,而性能差的應(yīng)用其體驗是好不了的。另外雖然 HTML5 框架支持了很多新特性,蘋果公開給 Web App 的 API 也越來越多,移動瀏覽器也越來越快,但原生 API 永遠(yuǎn)要支持得更多、更好、更快。所以在近期內(nèi), HTML5 做的 Web App 要達(dá)到或者超過同時期原生 App 的效果,是很難,甚至是不可能的。很多時候用 HTML5 出原型快,但是隨著需求的增加,想要實現(xiàn)的效果越來越高級,對性能要求越來越嚴(yán)格,完全用 HTML5 所花費的代價、對技術(shù)人員的要求反而要比用原生方案高很多,得不償失。
最后,各種技術(shù)都有其局限性也有其優(yōu)點,如果能夠把握好各技術(shù)的特點,把合適的技術(shù)用來解決合適的問題,做成 Hybrid 應(yīng)用是較好的方案(fb 之前過于偏重 HTML5,我認(rèn)為這不是我所描述的 hybrid 形式)。
郭瑞超則根據(jù)自己的經(jīng)驗分析了采用HTML5技術(shù)面臨的問題:
看似它有了一套嚴(yán)格的標(biāo)準(zhǔn),但是它扛不住不同平臺的本地實現(xiàn)的不同,它看起來可以幫我們偷懶,卻很難使我們的產(chǎn)品在一個平臺將那個平臺的特性發(fā)揮到極致。
更深入的,使用HTML5可以脫離商店的束縛,你的商店規(guī)則對我無效了,這看似自由了,但你相當(dāng)于同時放棄了對平臺資源的利用,這樣的對比下,顯然放棄平臺資源并不理智,除非你自己有很強(qiáng)大的渠道。
而且HTML5是一個完善中的標(biāo)準(zhǔn),它隨時產(chǎn)生變化,穩(wěn)定性還不如平臺,為了兼顧這套標(biāo)準(zhǔn),我的成本非但沒有降低,還增加了。
讀者朋友對此有何看法?

