個人移動混合開發之旅

在移動開發這片熱土上,除了原生以外,也有一些公司在嘗試着新技術、新模式,這是混合開發誕生和延續意義以及價值。node

原生開發和混合開發的優缺點也已是一個老生常談的事兒了,在這裏我就簡單來講一下:android

  原生開發優勢:靈活、主流、成熟、解決問題成本等優勢;ios

  混合開發技術:開發效率快,上手難度低,跨平臺(一套代碼能夠運行在ios/android)上;程序員

缺點就不用多說了,他們自己的優勢也是牽制對方的缺點。es6

進入主題web

  而咱們本文重點要說的是咱們在將近3年的實踐當中,對與混合開發的一些思考與總結,但願能夠幫助一些公司在混合開發技術框架選型上少走一些彎路,固然本文所述的全部信息都是我對於這些技術一些本身的理解,對你只是有參考做用,不能徹底替代和幫助框架師對於技術的選型,俗話說的好:「明白了不少道理,依然過很差這一輩子.」,有些坑仍是要本身踩的,否則也不會懂得什麼叫「刻骨銘心」!npm

框架進階之路api

  咱們這三年的時間,作的是一款綜合類app,裏面主要的功能有:新聞、工具(十餘款)、聊天、朋友圈,功能能夠說比較多。服務器

  而咱們使用的混合開發框架有:app

  • DCloud
  • DeviceOne
  • Xamarin
  • React Native

下來咱們說這四款框架的優缺點;

一、DCloud

  DCloud做爲咱們最先(2015年)使用的WebApp框架,能夠說讓咱們用的很是的不舒服,DCloud是咱們精心選擇的第一款混合開發框架,對比了同類的webapp框架還算優秀,有本身的開發工具HBuilder,有很好的模板和Demo讓咱們能很快的上手寫代碼,配合官方MUI(DCloud的UI解決方案),咋一看用起來還能夠,然而在咱們的實踐中還暴露了不少問題,下面我來列舉一下:

  優勢:

  • 門檻比較低(懂Js和Html的程序員對照着api很快可以上手);
  • 有一整套的解決方案,開發工具+UI庫;

  缺點:

  • 使用的是傳統H5技術,在性能上尤爲是低端android機上有瓶頸,高端機操做上也有明顯的延遲;
  • 打包是在線打包,服務器常常掛,至少2015年是這樣,結果你着急上東西,卻遲遲打不出來app,有必定的制約和風險性;
  • 文檔不是很全,有些東西不太好找;
  • 頁面生命週期執行函數存在機率事件,這個事情當時糾結了好久,官方的回覆也是有必定的概率執行或者不執行,2015年是這樣,如今的狀況不明;

  整體來講:DCloud看起來入門很容易,可是想要寫好須要很好的js功底,普通水平的js寫出來的app用戶體驗很是有侷限性,基於上面的問題,咱們決定換掉它。

二、DeviceOne

  DeviceOne(下文簡稱do)是咱們國內北京的一個公司作的,他也有本身的開發工具,是基於eclipse改的,編譯器能夠說很很差用,不時的須要從新啓動一下,而do和DCloud的最大區別是,do不是webapp,因此在性能上do是遠遠勝於DCloud的,do在UI上採用的是「組件商店」的概念,在說這個概念以前先要說說do的基本原理,do開發使用的是js語言,是標準的js函數,而js方法調用的組件,所有是用原生封裝好的,因此你使用的每一個組件:第1、能夠在開發工具上拖拉拽;第2、官方開發了他們開發組件的接口每一個人均可以給他們寫組件,下來具體說說他們的優缺點:

  優勢:

  • 開發效率極高,組件拖拉拽就能夠;
  • 開發門檻低,會js便可;
  • 執行效率高;

  缺點:

  • 開發質量、開發的功能,受組件的制約,組件有bug你寫出來的app就有bug,組件沒有的功能,你app也實現不了;
  • deviceone的打包次數和下載次數有限制,超出的須要收取費用;
  • 使用的是在線打包,服務器偶爾也會掛;  
  • 有些組件有問題,找官方處理,他們會讓你寫錯誤示例的demo,剛開始寫一個兩個還好,最後給do寫錯誤demo成了工做的一部分了,影響工做效率;
  • 使用的人很少,網上的資料/替代方案相對匱乏;

整體來講:do性能和模式都是ok的,只是開發app受外界因素影響比較多,資料比較少,替代方案几乎沒有。

三、Xamarin

  經歷了兩次框架更換以後,咱們把但願寄託給了微軟的Xamarin,用它的一個好處是可使用C#開發,對於C#出身的程序員來講,簡直是求之不得的事情,在一個好處就是他有一個「好粑粑」,以以前咱們對於C#的信任,讓咱們對於Xamarin的技術,也不自覺的產生了好感,以致於咱們錯誤了低估了他能帶給咱們的「麻煩」。

  優勢:

  • 可使用C#語言開發;
  • 本地打包,不在受其餘平臺服務器的制約;
  • 調試方便,vs開發工具打斷點容易;

  缺點:

  • 國內資料少,資料都是國外的;
  • 應用羣體少,成熟解決方案少,不少第三方組件不支持,咱們在綁定三方的組件好比:極光推送、相冊選擇、友盟統計、百度地圖等ios綁定上耗費了大量的時間和經歷;
  • 開發成本高,C#程序員也來越少也愈來愈難招;
  • ios意外的閃退比較多,並且緣由很差找;

整體來講:開發成本相對於以前兩款框架來講,耗費的成本要高不少,Xamarin自己的功能也有限,使用的人數少,致使資料和解決方案少,開發成本和解決問題的成本很高,有不少組件沒有很好的封裝,集成起來也相對麻煩不少。

四、React Native

  咱們目前正在使用的框架,Facebook和JD的開發框架,在混合開發技術領域屬於正統的,主流的框架,網上的資料多,基於React技術JSX技術相對成熟,開發成本低會js稍加學習一下JSX的語法便可,基於npm生態系統,全部nodejs可使用的三方包,均可以使用,可使用es5/es6/es7的語法開發app,很是舒服,第三方組件和綁定原生庫都很是的簡單方便,網上的資料也很是多。

  優勢:

  • 開發門檻低(會js稍加學習jsx語法便可);
  • 資料多,解決問題成本低;
  • 開發效率高,第三方集成組件多;
  • 有好的開發生態圈,性能好,背靠npm有萬級以上的優秀開源三方組件支持;

  缺點:

  • 初學者,配置較多,開發環境配置不是很方便;
  • Facebook的更新頻率比較快,版本存在必定的差別,有些老的資料可能並不適用於如今的版本;

整體來講:React Native對於混合開發來講應該是一個不錯的選擇。

總結

全部的經歷,到最後都會變爲經驗,擁抱變化,不斷的嘗試和學習新的技能,會讓你收益匪淺,墨守成規已經不在適應這個物競天擇的世界。成長的道路上會遇到不少坎坷和挫折,但無論這些試錯成本有多大,他最後產生的價值,要遠遠大於固步自封與墨守成規帶來的後果。

相關文章
相關標籤/搜索