隨著 Chrome 和 Safari 的高歌猛進(jìn),以及 IE+Flash 的衰落,HTML5 告一段落,進(jìn)入了下一個(gè)時(shí)代——移動(dòng)互聯(lián)網(wǎng)。HTML5 的跨平臺(tái)優(yōu)勢(shì)在移動(dòng)互聯(lián)網(wǎng)時(shí)代被進(jìn)一步凸顯。HTML5 是唯一一個(gè)通吃 PC、Mac、iPhone、iPad、Android、Windows Phone 等主流平臺(tái)的跨平臺(tái)語言。Java 和 Flash 都曾夢(mèng)想這個(gè)位置,但夢(mèng)斷于 iOS。此時(shí)人們紛紛開始研究基于 HTML5 開發(fā)跨平臺(tái)手機(jī)應(yīng)用。很多人當(dāng)時(shí)認(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 很費(fèi)勁,我既然會(huì)網(wǎng)頁開發(fā),為何不試試 HTML5。
W3C 此時(shí)成立了 Device API 工作組,為 HTML5 擴(kuò)展了 Camera、GPS 等手機(jī)特有的 API,然而麻煩的是,移動(dòng)互聯(lián)網(wǎng)初期的迭代太快了,手機(jī) OS 在不停的擴(kuò)展硬件 API,陀螺儀、距離感應(yīng)器、氣壓計(jì)。。。每年手機(jī) OS 都有大版本更新。而 W3C 作為一個(gè)數(shù)百家會(huì)員單位共同決策的組織,從標(biāo)準(zhǔn)草案的提出到達(dá)成一致是非常復(fù)雜的過程,跟不上移動(dòng)互聯(lián)網(wǎng)初期的快速迭代。
PhoneGap 的出現(xiàn),給開發(fā)者打開了一扇窗。很多人期待 PhoneGap 不停擴(kuò)展 API,來補(bǔ)充瀏覽器的不足。Adobe 看到 PhoneGap 仿佛看到了重振江湖地位的希望,但在 Adobe 收購 PhoneGap 后,又發(fā)現(xiàn)這個(gè)東西問題很多,而且開源使得 Adobe 無法像 Flash 那樣獲取商業(yè)利益,于是就把 PhoneGap 捐給了 Apache,改名為 Cordova。
因?yàn)楦鞣N原因,Cordova 的定位最終沒有成為瀏覽器的強(qiáng)化,而走向了混合式開發(fā)?;诋?dāng)時(shí)的背景,他們認(rèn)為原生是不可替代的,“原生 +HTML5”的混合模式更有意義。所以現(xiàn)在 Cordova 的使用往往是“原生工程師 +HTML5 工程師”一起協(xié)作完成 App。
這時(shí) Facebook 加入了 W3C,牽頭成立了 Mobile Web 工作組。Facebook 是混 Web 圈的,并且在手機(jī) OS 上并無自己的領(lǐng)地,他不喜歡被蘋果和 Google 掌控的原生應(yīng)用生態(tài)系統(tǒng)。Mobile Web 這個(gè)工作組的重要目標(biāo)就是讓 HTML5 開發(fā)的網(wǎng)頁應(yīng)用達(dá)到原生應(yīng)用的體驗(yàn)。然而,事與愿違,它不努力也就算了,結(jié)果是努力了卻失敗了。2012 年,F(xiàn)acebook 放棄了 HTML5 的新聞充斥了全世界的 IT 媒體,HTML5 瞬間被打入冷宮。
Facebook 為何放棄 HTML5?核心是當(dāng)時(shí)基于 HTML5 真的做不出好的移動(dòng) App。對(duì)比 Twritter 等競(jìng)爭(zhēng)對(duì)手的原生 App,F(xiàn)acebook 的 HTML5 版本實(shí)在無法讓用戶滿意。比如 Push 功能,到現(xiàn)在 HTML5 的推送和原生的推送體驗(yàn)差距依然巨大,更不用說 HTML5 應(yīng)用的頁面切換白屏、下拉刷新 / 側(cè)滑菜單不流暢等眾多問題??粗こ處熭p松實(shí)現(xiàn)搖一搖、二維碼、語音輸入、分享到朋友圈等功能,更是讓 HTML5 工程師感覺自己站錯(cuò)了隊(duì)。
即使 Facebook 不喜歡被控制,也不能拿被用戶拋棄來冒險(xiǎn)。而且 Facebook 并沒有掌握關(guān)鍵點(diǎn)—手機(jī)瀏覽器內(nèi)核。如果瀏覽器不跟上,其他都是白搭。
而瀏覽器在手機(jī)上的表現(xiàn)是什么呢?先看 Google,Chrome 性能雖高,但 Android 上的瀏覽器卻并非 Chrome,而是 WebKit 改出來的一個(gè)蹩腳的 Android 瀏覽器;再看蘋果,iOS 上不允許其他瀏覽器引擎上架 App Store,而且其他使用 Safari 引擎的應(yīng)用也無法調(diào)用蘋果自己的 JavaScript 加速引擎 Nitro。結(jié)果是蘋果和 Google 不但不在瀏覽器上積極實(shí)現(xiàn) HTML5 關(guān)于移動(dòng) App 所需的規(guī)范,反而對(duì) HTML5 做出種種限制。
不管是當(dāng)時(shí)硬件能力不足,還是手機(jī) OS 廠商的故意限制,總之結(jié)果很明顯:在移動(dòng)互聯(lián)網(wǎng)的初期,一定是原生應(yīng)用生態(tài)系統(tǒng)的天下,iOS 和 Android 首先把自己變成老大后,其他小弟才能尋覓到成長(zhǎng)的機(jī)會(huì)。
Facebook 也好,PhoneGap 也好,想在移動(dòng)互聯(lián)網(wǎng)初期就分一杯羹是分不到的,但堅(jiān)持下來,機(jī)會(huì)往往會(huì)出現(xiàn)。