結合自己實戰項目,介紹幾款跨平臺開發框架,一篇足夠讓你知道怎么抉擇

說在前面:

? ? ? ?本屌是一名 Android APP開發者,從大學畢業開始一直都是與原生app打交道,前幾年Android在市場上大火,需求也是很多,本屌混的也順風順水,好不得意。

? ? ? 然而最近幾年隨著小程序,web,APP端各種端大行其道,又恰逢互聯網寒冬,各個公司都在節約成本,以前一個項目Android,IOS都會有相應的開發人員,現在公司都要求人員會跨平臺開發,以前2個人干的多端活,現在1個人干多端,只會原生app開發那一套已經行不通了,本屌心里那個慌啊,各位看官心里慌不慌?多端統一開發已是大勢所趨,趁著現在還能動(已經三十而立了),趕緊多學一些吧。。。

? ?公司最近的項目要求在Android,IOS,小程序上同時運行,前端開發人員僅本屌一人,為了完成任務,將最近前端所涉及的技術框架都做了一個調查,也進行了實踐,現在將自己的歷程分享出來,供大家參考,由于能力有限,歡迎大家對錯誤的地方進行指正。

一、原生開發與跨平臺開發技術

原生開發

原生開發就是用原生sdk api(Android或IOS)進行開發,Android使用Java或Kotlin,IOS使用Objective-C或Swift。

原生開發優勢:

1.速度快、性能高,可實現復雜的動畫,整體用戶體驗好;

2.可以訪問平臺的全部功能,包括硬件(藍牙,GPS,拍照,攝像等)

主要缺點

1.平臺特定,開發成本高,不同平臺需要維護不同代碼

2.動態化弱,有新功能需及時發版

?總結一下,純原生開發主要面臨動態化和開發成本兩個問題,而針對這兩個問題,誕生了一些跨平臺的動態化框架。

跨平臺開發

市場上跨平臺方案比較多,主要分為三類

1.H5+原生(uni-app,appcan,Cordova,Ionic等)

2.JavaScript開發+原生渲染(React Native、Weex)

3.自繪UI+原生(flutter)

? ? ?h5+原生的開發模式為混合開發?,采用混合模式開發的APP我們稱之為混合應用或Hybrid APP?,如果一個應用的大多數功能都是H5實現的話,我們稱其為Web APP 。

? ? ? 混合應用的優點是動態內容是H5,web技術棧,社區及資源豐富,缺點是性能不好,對于復雜用戶界面或動畫,webview不堪重任。

下面列舉自己在項目中選型所涉及的幾個跨平臺框架

先來一張自己總結的表格,供大家參考:

下面詳情講解一下:

一、flutter (可跨Android和IOS)

? ? ? ?Flutter 是 Google推出并開源的移動應用開發框架,主打跨平臺、高保真、高性能。開發者可以通過 Dart語言開發 App,一套代碼同時運行在 iOS 和 Android平臺。 Flutter提供了豐富的組件、接口,開發者可以很快地為 Flutter添加 native擴展。

優勢:

1.跨平臺自繪引擎,性能強大,流暢:對比weex和react native,性能的強大是很明顯的,基于dom樹渲染原生組件,很難與直接在原生視圖上繪圖比肩性能,Google作為一個輪子大廠,直接在兩個平臺上重寫了各自的UIKit,對接到平臺底層,減少UI層的多層轉換,UI性能可以比肩原生,這個優勢在滑動播放動畫時尤為明顯

2.采用Dart語言開發:開發效率高,高性能,快速內存分配,類型安全

3.已發布正式版本,google投入資源大,后期會做大做強。

缺點:

1.部分場景仍需原生開發。

注:通過對flutter的學習,感覺還是很不錯的,dart學習成本很低,幾乎可以不用怎么學,通過實踐,2周時間足夠可以開始動手擼代碼。

二、React Native(可跨Android和IOS)

? ? ? ?使用Javascript語言,類似于HTML的JSX,以及CSS來開發移動應用,將虛擬DOM映射為原生控件,因此熟悉Web前端開發的技術人員只需很少的學習就可以進入移動應用開發領域。

其優勢和缺點網上文章很多,這里就不做敘述。談談自己在實踐中遇到的問題:

1.學習成本太高,對沒有React前端技術的同學來說,上手是很不容易的,本屌搭建環境都用了2天時間

2.開發過程中總遇到一些莫名其妙的問題,可能是學藝不精,最終一個星期后終于放棄該方案。

3.據查詢的資料顯示,很多公司由于各種原因已經放棄React Native ,而且很多大神也表示放棄RN是業內的共識,至于共識的原因哪位同學知道,可以分享一下。

三、Taro(可跨H5,小程序,React Native)

京東 - 凹凸實驗室打造的一套遵循 React 語法規范的多端統一開發框架,github上已超過16K的star。詳情參考?https://github.com/NervJS/taro

? ?taro多端統一開發框架,支持用 React 的開發方式編寫一次代碼,生成能運行在微信/百度/支付寶/字節跳動小程序、H5、React Native 等的應用。

觀點:

由于Taro編寫出來的工程,如果打包成IOS和Android 需要先將程序生成React Native ,然后再有RN來打包IOS和Android。由于RN的一些經歷,本屌未嘗試,直接放棄該方案。有同學嘗試過的可以分享一下過程。

四、uni-app(可跨Android、IOS、H5、各種小程序)

uni-app?是一個使用?Vue.js?開發跨平臺應用的前端框架,開發者編寫一套代碼,可編譯到iOS、Android、H5、小程序等多個平臺,可參看官網?https://uniapp.dcloud.io/

由于公司的項目需要Android,IOS和小程序共存,最終選擇該方案,目前已完成項目,下面說說自己的看法

1. 學習成本很低,雖然之前沒接觸過vue,但是上手很快,1天時間看vue語法,1天時間了解uniapp并對其創建-打包整個過程進行熟悉,然后第三天可以開始擼代碼,一個多星期就完成公司的項目,一款涉及30多個頁面的應用。

2.提供云打包和本地打包,對沒有蘋果電腦的人是福音,可以使用云打包進行蘋果ipa制作,當然前提是上傳代碼到云端,如果代碼怕泄露那就本地打包

3.uni-app里面集成了5+plus,nvue和weex功能,所以對熟悉weex的同學也能滿足

4.項目運行性能良好,由于應用是一些常規應用,整體和原生體驗相差不大

5.國產開源,群比較活躍,遇到問題可以直接咨詢群管理

當然缺點也有:

1.對于大量圖片展示、tab滑動上卡頓有些明顯

2.對地圖方面支持力度不夠,有很多bug,對于定位,地圖選擇位置,圖層繪制簡單的氣泡這些基本功能都提供的有接口,使用起來還是很方便的

3.存在部分bug,比如手機震動,提供的接口不起效果,但是可以使用5+ 代碼進行實現。

最后:

? ? ?現階段只懂原生開發已經很難立足市場,現在都是多端開發。跨端可以考慮flutter和uni-app這兩個框架,前者是原生渲染速度快,可跨Android和IOS兩端開發。后者是web渲染,可以跨Android,IOS,小程序,h5多端,缺點是性能問題。但對常規應用,性能表現還不錯。剛用uniapp完成公司的項目,性能表現挺好。

? ?七分精力在原生,三分精力留給跨平臺,最后希望各位提出意見,一起溝通學習。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374

推薦閱讀更多精彩內容