打破web開發困局 Blend完美接盤Native app
近日,全球軟件開發大會QCon亮相上海。作為為團隊領導者、架構師、項目經理和高級軟件開發人員量身打造的企業軟件開發大會,QCon邀請了諸多業內大牛為大家做出技術分享。其中,直達號Clouda+團隊的百度資深工程師雷志興用一場名為《Blend,完美地混合Web App與Native App》的演講,吸引了與會代表們的大量“眼球”。
現場,雷志興從百度輕應用和直達號講起,繼而談到Blend的初衷。“去年八月我們推出了輕應用,這是一項面向開發者的平臺和技術,而今年在輕應用的基礎上我們推出了直達號。百度提供了很強的渠道分發能力,但從體驗上來說,我們依然覺得輕應用和Native app有一定差異,而Blend的就是為了彌補這些差異而出現。”
在他看來,Blend不僅僅是一項“拿來即用”的開源技術,更是一種開發理念。使用這個理念,App不僅能保留web靈活性,剔除冗長的版本發布過程,做到極快的迭代速度,還能在交互中保證足夠的流暢性。
“Blend中有兩項核心技術:多webview技術和插件動態加載技術。前者能讓web的能力和性能得到質的提高,后者則是在架構上保證了運行環境的簡單高效”雷志興表示。
無線困境誰來破局
隨著移動互聯網的發展,Native App開始逐漸到達它增長的天花板,于是越來越多開發者開始把目標瞄向web開發。在初期,一般大家在做移動web站點時,都會追求一些無刷新的跳轉、換頁效果,可是這些效果在高端機上都會偶爾出現運行不流暢等問題,在中低端智能機上更是難以運行。所以近一兩年來,大家傾向于不在移動web站點中采用復雜的特效,只在最關鍵的部分,用最小的代價來實現。這樣一來雖然滿足了大部分用戶的需求,不過很多個性化的效果又無法順利實現了。
關于WebApp的能力,Developer Economics在調研了Google Play中的30339個App曾給出過一份報告,報告顯示,拋開性能的話,如果只使用HTML5技術,能實現37%的app,如果使用Phonegap,能實現49%,如果使用Appcelerator,能實現63%。
與此同時,大量的調研都顯示性能和API數量不足是webapp的主要軟肋,而性能的最主要體現是在頁面切換的轉場過程。因此Clouda+團隊面臨的首要目標就是如何能讓WebApp的轉場像Native App那般流暢。
在iOS下,有較好的設備性能和瀏覽器支持,用Web來做復雜交互問題不太大,但Android下就相當棘手了。Clouda+團隊的Blend項目正向前端開發者展示著另一種可能。
調研嘗試尋找源頭
輕應用有兩大入口:移動搜索和手機百度App,接入輕應用的開發者尤其看重手機百度入口。因為在手機百度中,由于輕應用的運行環境是百度框,所以開發者可以使用一些Native API的接口,即Clouda API,包括提供設備能力的Device API,提供百度云服務能力的MBASS API等。
最初,他們團隊重點考慮的是類似Appcelerator的方案,不過他們不像Appcelerator那么激進地將Javascript編譯成Native code,而希望暴露一組基本的Native API,供前端工程師調用以實現流暢的App效果。但這樣隨之而來的問題是,開發者的可定制性會變得特別差,極度依賴Native API,開發感受會很糟糕,畢竟開發者操作的不再是DOM,而是一個私有的API。于是這個方案很快就被否定了。
后來,雷志興發現,其實大家在性能方面的擔憂主要還是在轉場和動畫上。不管頁面多復雜,很少有會擔心頁面內部的性能。于是他提出了一個概念——Every element can be a webview。由于輕應用的使用場景和Native結合得很好,Blend團隊就開始利用Native技術來做轉場。相對用web技術,用Native來做轉場在技術上就可控多了。
技術開源貢獻業界
因為把握住了問題的核心,所以Blend的核心實現也很順利,雷志興說,Blend秉承了模型從簡的原則,并且為開發者保留最大的靈活性。所謂模型從簡,就是Blend提供的是核心能力:讓Javascript能控制webview,就好像控制DOM一樣,不同webview之間通過事件通訊,Javascript和Native code通過事件通訊,這讓開發者能快速理解核心概念并上手。此外,為開發者保留最大的靈活性,主要體現在Blend內部不大量依賴原生控件,webview內部的樣式完全可以通過開發者來自定義,在UI風格上面沒有任何限制,擁有無限的靈活性。此外,Blend也不會影響開發者對其他庫、框架的選擇。
“Blend的這個概念讓View有了‘原生’支持,任何的Element都可以用一個獨立的webview來實現,瀏覽內核的負擔就減輕了,而且切換時的過場動畫用原生代碼實現,也保證了性能。”雷志興說。
Blend的出現,對輕應用開發者來說是巨大的福音,他們可以在在不接觸任何Native代碼的前提下,就讓輕應用的體驗有質的提高,Blend也已經通過輕應用Runtime下發到部分輕應用的運行環境中了。
值得一提的是,雷志興非常熱衷于技術開源,在百度,他所所負責的技術產品全部是開源項目:Tangram是百度第一個開源的技術項目,FIS亦于2012年開放源代碼,Clouda+同樣也是開源產品。所以,Blend除了能為百度輕應用解決體驗問題,同樣適用于第三方的App,開發者可以將SDK打包入App,單獨發布App上架。
Blend能在能保證用戶體驗的前提下節省人力成本,又有很高的定制性,迭代速度和web相當。如果你正開發App的初版,你可以用Blend理念來加速開發,盡早上線MVP(最簡可行產品)并快速迭代;如果你正開發一個大中型App,這個理念能釋放web的靈活性,讓web開發工程師在App迭代過程中做得更多、做得更好。