如果說以前的微信公眾號還是一個媒體化的平臺,那么2016年的公眾號會有一種新的形態(tài),,叫應(yīng)用號,。應(yīng)用號預示著比公眾號更強大的功能、更優(yōu)質(zhì)的體驗以及更豐富的服務(wù),。應(yīng)用號的出現(xiàn)是微信產(chǎn)品的一次重大升級,,無論是為了體現(xiàn)用戶價值觀,?還是追求產(chǎn)品商業(yè)化,?作為一名技術(shù)人員,我不想過多討論,,而是更愿意從技術(shù)的角度來分析一些其中Web技術(shù)的發(fā)展,。 隨著移動設(shè)備的快速更新?lián)Q代,,以HTML5為代表的Web技術(shù)在Native App中有了越來越多的應(yīng)用場景,。一方面是Native App開發(fā)團隊在保證功能和性能的同時,,需要提高開發(fā)效率,降低運營成本,;另一方面是App用戶在滿足需求和體驗的同時,,需要更快的獲取動態(tài)的內(nèi)容;這些都需要Web技術(shù)在App開發(fā)中發(fā)揮越來越多的作用和價值,。但這種價值絕對不能稱為脫離或顛覆,。在今天,更多的是“融合”,!
我從06年開始做了10年瀏覽器引擎和跨平臺App引擎,。見證了這10年來,Web技術(shù)在Native App中不斷的應(yīng)用和發(fā)展,。從功能機到智能機,,從k-java到移動App,從WebBrowser到Webkit,,我們可以將Web技術(shù)在Native App中的發(fā)展分為5個階段,,內(nèi)置、嵌入,、橋接,、混合、融合,。
2010年之前,那時還是feature phone為主流的時代,,硬件配置低,,系統(tǒng)功能弱,手機應(yīng)用以內(nèi)置為主,。但SP業(yè)務(wù)已得到長足的發(fā)展,,用戶需要動態(tài)獲取內(nèi)容來滿足資訊和娛樂的需求。這個時期Web技術(shù)在Native應(yīng)用中的使用方式是Native應(yīng)用開發(fā)商與瀏覽器廠商合作,,在應(yīng)用中內(nèi)置某個廠商的瀏覽器引擎,,作為Web的執(zhí)行容器,。應(yīng)用從服務(wù)器端動態(tài)下載web文件,解壓后交給Web容器離線運行,。內(nèi)容和功能都很簡單,,通常就是圖片+文字的排版,以及按鍵交互,。形式如圖書,、雜志,、小游戲以及小工具等。這類需求也驅(qū)動了當時一些主流瀏覽器廠商去思考瀏覽器的在傳統(tǒng)價值以外的作用,,并積極參與到W3C Widget規(guī)范的制訂,。這一時期也是移動瀏覽器廠商的黃金時代。
2010年,,Android系統(tǒng)在國內(nèi)興起,iPhone也逐漸普及,,以Android和iOS為主的原生應(yīng)用生態(tài)系統(tǒng)開始不斷的培養(yǎng)用戶到AppStore下載應(yīng)用,,以及以獨立App作為入口的使用習慣。這一時期App開發(fā)需求也逐漸增長,,但是競爭還不算激烈,。客戶可以接受原生的開發(fā)成本和周期,。應(yīng)用開發(fā)商利潤豐厚,,開發(fā)者紛紛開始學習Android和iOS App開發(fā)。系統(tǒng)自帶瀏覽器的功能和性能已經(jīng)超過當時的第三方瀏覽器,。在App中通過嵌入系統(tǒng)Webview來展示本地或服務(wù)器端的界面已經(jīng)比較常見,。這一時期Web技術(shù)的應(yīng)用以內(nèi)容展示為主,所能完成的功能被限制在標準瀏覽器支持的范圍內(nèi),。而傳統(tǒng)瀏覽器廠商依靠Lisence收費的商業(yè)模式終結(jié),,并且逐漸淡出市場。
2011年,, Android和iOS在手機系統(tǒng)中逐漸已經(jīng)占據(jù)了統(tǒng)治地位,。App開發(fā)需求迅速增長,,競爭加劇,原生開發(fā)人員供不應(yīng)求,,客戶開始考慮成本和周期,,開發(fā)商開始考慮效率和利潤。開發(fā)者開始思考Webview在展示內(nèi)容之外是否還可以完成部分App功能,。由于系統(tǒng)內(nèi)置的都是Webkit引擎,,支持標準的Web技術(shù),并且支持開放擴展,。國內(nèi)外以Phone Gap為代表的廠商開始了對Webview的橋接擴展,,并且形成一套完整的調(diào)用機制,在JS中可以任意調(diào)用原生接口,。
這種橋接擴展主要集中于設(shè)備功能,,提供的是一種能力,,但是更多具體的映射還需要開發(fā)者自己來完成。由于沒有涉及窗口系統(tǒng),、交互響應(yīng),、動畫效果,事件管理以及應(yīng)用生命周期管理等的擴展,,所以雖然開發(fā)出的App基本功能可以滿足需求,,但是性能和體驗太差。此時通過Webview+橋接擴展的方式,,原生工程師和Web工程師一起協(xié)作已經(jīng)可以完成一款 App的開發(fā)了,。這一時期標準Web技術(shù)(HTML,CSS,,JS)和橋接擴展機制在移動App中的使用趨勢也造成了一批傳統(tǒng)的使用非標準web技術(shù)(自定義XML標簽和JS語法)的移動中間件廠商的消亡,。
從2012年開始,,App創(chuàng)業(yè)火爆,,App需求持續(xù)增長,有了更多的應(yīng)用場景和行業(yè)結(jié)合:LBS,,IoT,,O2O,社交,、視頻等等,。一方面是使用HTML+CSS進行界面布局存在Dom樹更新及單層渲染的性能問題,而且標準JavaScript規(guī)范支持的能力非常有限,,需要大量的擴展來滿足行業(yè)需求,;另一方面是原生開發(fā)模式成本高、效率低,,行業(yè)呼喚更高效的跨平臺開發(fā)模式,。
這一時期,國內(nèi)外跨平臺技術(shù)也是層出不窮,,不斷涌現(xiàn)出新的產(chǎn)品,,但我們可以其他們分為兩類: l 一類是繼續(xù)堅持使用HTML+CSS進行界面布局,通過對頁面渲染進行優(yōu)化和對標準JS進行原生擴展來實現(xiàn)跨平臺App開發(fā),。 l 另一類是放棄使用HTML+CSS的界面布局,,選擇一種第三方的中間語言(如JS,C#等)來映射成Android和iOS的系統(tǒng)調(diào)用,,從而實現(xiàn)跨平臺,。這種方式的界面布局需要通過中間語言組合系統(tǒng)UI組件來完成,目前看渲染性能是比HTML+CSS的方式要好些,,但這樣也失去了HTML+CSS布局的標準性和靈活便捷,。
本文探討的主要是Web技術(shù)在App中的發(fā)展過程,,不可能沒有HTML和CSS,,所以這里我們將集中討論第一類的跨平臺產(chǎn)品(Web+Native混合)。像React Native雖然他所選擇的第三方語言是JS,,但是他也可以選擇其他語言,,由于HTML和CSS已經(jīng)不是其界面布局的方式,所以我認為其已經(jīng)脫離了標準的Web的技術(shù),,這里不再過多討論。
此時國內(nèi)HTML5也逐漸火熱,,大量的Web程序員期待進入Native App的開發(fā)領(lǐng)域,。此時,面向Web工程師的移動應(yīng)用開發(fā)平臺(Web+Native混合)開始出現(xiàn),,提供了一站式的跨平臺App開發(fā)和管理服務(wù),,形成了一種新的Web技術(shù)與Native App相結(jié)合的模式。
Hybrid App是一個以Web技術(shù)為主的Native App開發(fā)模式,,開發(fā)者不需要具備任何的Native技能,,使用標準的web技術(shù),通過調(diào)用平臺的擴展API,,就可以開發(fā)出獨立的跨平臺App,。并且能保證App的功能、性能和體驗,。 MVC架構(gòu); 應(yīng)用生命周期和統(tǒng)一事件管理,; 優(yōu)化交互響應(yīng),、動畫效果、數(shù)據(jù)緩存等,; Web界面與Native組件的混合渲染,; 豐富的獨立功能模塊與聚合開放平臺API; 對主流HTML編輯器進行擴展來支持App開發(fā),; App安全機制及Web代碼全包加密;
開發(fā)一款App,,到底誰當主角?是Native+Web,,還是Web+Native,?那要看誰更適合當主角,誰當主角才能把戲演好,。一部好戲不能只有一個主角,,配合互補才能演出好戲。
|
|