在移動開發這片熱土上,除了原生以外,也有一些公司在嘗試着新技術、新模式,這是混合開發誕生和延續意義以及價值。node
原生開發和混合開發的優缺點也已是一個老生常談的事兒了,在這裏我就簡單來講一下:android
原生開發優勢:靈活、主流、成熟、解決問題成本等優勢;ios
混合開發技術:開發效率快,上手難度低,跨平臺(一套代碼能夠運行在ios/android)上;程序員
缺點就不用多說了,他們自己的優勢也是牽制對方的缺點。es6
進入主題web
而咱們本文重點要說的是咱們在將近3年的實踐當中,對與混合開發的一些思考與總結,但願能夠幫助一些公司在混合開發技術框架選型上少走一些彎路,固然本文所述的全部信息都是我對於這些技術一些本身的理解,對你只是有參考做用,不能徹底替代和幫助框架師對於技術的選型,俗話說的好:「明白了不少道理,依然過很差這一輩子.」,有些坑仍是要本身踩的,否則也不會懂得什麼叫「刻骨銘心」!npm
框架進階之路api
咱們這三年的時間,作的是一款綜合類app,裏面主要的功能有:新聞、工具(十餘款)、聊天、朋友圈,功能能夠說比較多。服務器
而咱們使用的混合開發框架有:app
下來咱們說這四款框架的優缺點;
DCloud做爲咱們最先(2015年)使用的WebApp框架,能夠說讓咱們用的很是的不舒服,DCloud是咱們精心選擇的第一款混合開發框架,對比了同類的webapp框架還算優秀,有本身的開發工具HBuilder,有很好的模板和Demo讓咱們能很快的上手寫代碼,配合官方MUI(DCloud的UI解決方案),咋一看用起來還能夠,然而在咱們的實踐中還暴露了不少問題,下面我來列舉一下:
優勢:
缺點:
整體來講:DCloud看起來入門很容易,可是想要寫好須要很好的js功底,普通水平的js寫出來的app用戶體驗很是有侷限性,基於上面的問題,咱們決定換掉它。
DeviceOne(下文簡稱do)是咱們國內北京的一個公司作的,他也有本身的開發工具,是基於eclipse改的,編譯器能夠說很很差用,不時的須要從新啓動一下,而do和DCloud的最大區別是,do不是webapp,因此在性能上do是遠遠勝於DCloud的,do在UI上採用的是「組件商店」的概念,在說這個概念以前先要說說do的基本原理,do開發使用的是js語言,是標準的js函數,而js方法調用的組件,所有是用原生封裝好的,因此你使用的每一個組件:第1、能夠在開發工具上拖拉拽;第2、官方開發了他們開發組件的接口每一個人均可以給他們寫組件,下來具體說說他們的優缺點:
優勢:
缺點:
整體來講:do性能和模式都是ok的,只是開發app受外界因素影響比較多,資料比較少,替代方案几乎沒有。
經歷了兩次框架更換以後,咱們把但願寄託給了微軟的Xamarin,用它的一個好處是可使用C#開發,對於C#出身的程序員來講,簡直是求之不得的事情,在一個好處就是他有一個「好粑粑」,以以前咱們對於C#的信任,讓咱們對於Xamarin的技術,也不自覺的產生了好感,以致於咱們錯誤了低估了他能帶給咱們的「麻煩」。
優勢:
缺點:
整體來講:開發成本相對於以前兩款框架來講,耗費的成本要高不少,Xamarin自己的功能也有限,使用的人數少,致使資料和解決方案少,開發成本和解決問題的成本很高,有不少組件沒有很好的封裝,集成起來也相對麻煩不少。
咱們目前正在使用的框架,Facebook和JD的開發框架,在混合開發技術領域屬於正統的,主流的框架,網上的資料多,基於React技術JSX技術相對成熟,開發成本低會js稍加學習一下JSX的語法便可,基於npm生態系統,全部nodejs可使用的三方包,均可以使用,可使用es5/es6/es7的語法開發app,很是舒服,第三方組件和綁定原生庫都很是的簡單方便,網上的資料也很是多。
優勢:
缺點:
整體來講:React Native對於混合開發來講應該是一個不錯的選擇。
全部的經歷,到最後都會變爲經驗,擁抱變化,不斷的嘗試和學習新的技能,會讓你收益匪淺,墨守成規已經不在適應這個物競天擇的世界。成長的道路上會遇到不少坎坷和挫折,但無論這些試錯成本有多大,他最後產生的價值,要遠遠大於固步自封與墨守成規帶來的後果。