Native App
傳統的App開發模式,有iOS和aOS兩大系統,需要各自語言開發各自的App。 有較好的性能和體驗,但是開發成本和發布成本都很高。最好的例子是:網易管家App(Tab1 Tab2)。
Web App
移動端的網站,常常被稱為H5應用,其實就是運行在特定的移動端瀏覽器上的網站應用。一般泛指 SPA(Single Page Application)模式開發出的網站,與MPA(Multi-page Application)對應。 開發成本和發布成本都很低,但是性能和體驗雖然不是最差的,但是也受到瀏覽器處理能力的限制,多次下載一樣會占用用的流量。同樣的例子也是:網易管家APP(Tab3)。
Hybrid App
混合模式的移動應用,介于Web App、Native App這兩者之間的App開發技術,兼具“Native App良好交互體驗的優勢”和“Web App跨平臺開發的優勢”,其實主要的原理是,由Native通過JSBridge等方法提供統一的API,然后用Html+Css實現界面,JS來寫邏輯,調用API,最終的頁面在Webview中顯示,這種模式下,Android、iOS的API一般有一致性,Hybrid App所以有跨平臺效果。 開發和發布都很方便,效率也是介于Native App模式和Web App模式之間的,但是需要學習的范圍比較廣泛,而且需要原生配合。最好的例子:我愛我家App,東方航空App。
React Native App
Facebook發現Hybrid App存在很多缺陷和不足,于是發起開源的一套新的App開發方案React Native。使用JSX語言寫原生界面,js通過JSBridge調用原生API渲染UI交互通信。 效率體驗非常接近Native App,而且發布和開發成本低于Native App,但是學習需要一定的成本,而且學習文檔較少,很容易踩坑。最好的例子:Facebook、Youtube、Discord、QQ、百度等等。
Weex App
阿里巴巴開發團隊在React Native的成功案例上,重新設計出的一套開發模式,等于是站在了巨人肩膀上并有淘寶團隊項目做養料,廣受關注,2016年4月正式開源,并在v2.0版本官方支持Vue.js,與React Native分庭抗禮。
單頁開發模式效率非常高,熱更新發包體積小,并且跨平臺性更強。但是由于是剛剛起步,文檔并不全面,而且社區活躍度也沒有React Native高,功能尚不健全,暫時不適合完全適用Weex開發App。 當然啦最好的例子肯定是馬爸爸旗下的淘寶、天貓、阿里云、優酷、閑魚、餓了么等等。
深度解析
Native App
Native App是一種基于智能手機本地操作系統如iOS、Android、WP并使用原生程式編寫運行的第三方應用程序,也叫本地app。一般使用的開發語言為Java、C++、Objective-C。
自iOS和Android這兩個的手機操作系統發布以來,在互聯網界從此就多了一個新的名詞:App意為運行在智能的移動終端設備第三方應用程序。
Native App因為位于平臺層上方,向下訪問和兼容的能力會比較好一些,可以支持在線或離線,消息推送或本地資源訪問,攝像撥號功能的調取。但是由于設備碎片化,App的開發成本要高很多,維持多個版本的更新升級比較麻煩,用戶的安裝門檻也比較高。但是比較樂觀的是,AppStore培養了一種比較好的用戶付費模式,所以在Apple的生態圈里,開發者的盈利模式是一種明朗狀態,其他market也在往這條路上靠攏。
優勢 1、相比于其它模式,提供最佳的用戶體驗,最優質的用戶界面,最華麗的交互 2、針對不同平臺提供不同體驗 3、可節省帶寬成本,打開速度更快 4、功能最為強大,特別是在與系統交互中,幾乎所有功能都能實現
WebApp
說到Web App 很多人會聯想到 WAP,或者有人認為,WAP就是WebApp,其實并不是的。
WebApp 與 WAP 最直接的區別就是功能層面。WAP更側重使用網頁技術在移動端做展示,包括文字、媒體文件等。而Web App更側重“功能”,是使用網頁技術實現的App。總的來說,Web App就是運行于網絡和標準瀏覽器上,基于網頁技術開發實現特定功能的應用。
響應式的大部分技術都是為實現WebApp能適配多類客戶端而設計的。
Web網站一般分兩種,MPA(Multi-page Application)和SPA(Single-page Application)。而WebApp一般泛指SPA形式開發出的網站。這樣更像是一個App。
優勢 1、可以跨平臺,調試方便 2、無需安裝,不會占用手機內存,而且更新速度最快 3、不存在多版本問題,維護成本低 4、臨時入口,可以隨意嵌入
Hybird App
混合開發,也就是半原生半Web的開發模式,由原生提供統一的API給JS調用,實際的主要邏輯有Html和JS來完成,最終是放在webview中顯示的,所以只需要寫一套代碼即可達到跨平臺效果,另外也可以直接在瀏覽器中調試,很方便。最重要的是只需要一個前端人員稍微學習下JS api的調用即可。
Hybird App 的較早實踐者是PhoneGap,隨后遍地開花,如Titanium、Salama、WeX5、Kerkee和國內的AppCan,項目各有各的實現方式,大致的原理基本相同。有幸在AppCan上海總部參與過一段時間的學習研究,如下大致簡介:
AppCan是基于HTML5技術的Hybird跨平臺移動應用開發工具。開發者利用Html5+Css3+JavaScript技術,通過AppCan IDE集成開發系統、云端打包器等,快速開發出Android、iOS、WP平臺上的移動應用。
AppCan的平臺構成
在實際的APP開發中,AppCan可以完成大部分的工作量,如圖示:
AppCan將App底層復雜的原生功能封裝在引擎、插件中,開發者僅需調用接口、打包編譯,就可以獲得原生功能;靈活的插件擴展機制。
開發者可以像開發WebApp一樣開發app的視覺UI,以及絕大部分的交互,當需要使用原生功能(如攝像頭,陀螺儀等功能)時,只需要調用官方的API就可以輕松實現Native的效果。至于JS和Native的通信,常用的有URL監聽和絕大部分Hybrid廠商使用的JSBridge通信,兩者原理相近。
在Hybird概念盛行的時候,國內外各大公司也參與了探索,國外代表有Facebook、google、亞馬遜,國內的有騰訊、阿里巴巴、網易等,慢慢的他們發現Hybird嚴重受限于WebView的解析渲染效率,于是Facebook開始了他的類原生的研究探索。