近半年,自己創(chuàng)業(yè)做在線教育惫霸,近期也打算開發(fā)自己的APP猫缭,作為一個技術(shù)出身的創(chuàng)業(yè)者,所以可以在開發(fā)APP時自己做技術(shù)選型?壹店。
但想到還有很多創(chuàng)業(yè)者或架構(gòu)師也面臨類似的問題猜丹,所以把自己的思考分享給需要的人。
我的客戶端經(jīng)驗
筆者2011年畢業(yè)于北京交大茫打,2015年下半年開始由操作系統(tǒng)開發(fā)轉(zhuǎn)向安卓開發(fā)居触,2016年在搜狐開始使用react-native開發(fā)APP妖混。
2017年曾短期在便利蜂參與過三個RN項目的開發(fā)老赤,然后去易鑫從事大前端團隊的管理,團隊開發(fā)維護的原生APP制市,通過搭橋嵌入H5抬旺。
2019年初在快陪練負責前端團隊,以純flutter的方式上線了一個iOS版的鋼琴資訊APP祥楣,且在直播上課APP中的訂單模塊接入了flutter开财。
過去半年多,使用uni-app開發(fā)了多個跨端小程序误褪,其中uni-app集成了weex跨端APP開發(fā)框架责鳍,可以一套代碼生成h5,各種小程序以及安卓和iOS的原生APP兽间。
不管是原生APP历葛、還是近幾年比較熱門的RN、weex或flutter跨端開發(fā)APP的技術(shù)嘀略,筆者都在真實項目中使用過恤溶。
正因為都用過乓诽,所以各自的坑有都進去過,雖然因為學的東西多咒程,導(dǎo)致精力分散鸠天,很多技術(shù)都是略懂,但是總結(jié)一下帐姻,相信還是能有一定參考價值的稠集。
移動應(yīng)用開發(fā)的趨勢
由于對移動應(yīng)用的大量需求,很多公司已經(jīng)把他們應(yīng)用開發(fā)的重心轉(zhuǎn)移到移動應(yīng)用上了卖宠,這是一個不斷有更好的技術(shù)巍杈、平臺和框架流入的領(lǐng)域。
移動行業(yè)渴望進行一場革命扛伍,以遏制移動應(yīng)用程序開發(fā)過程中出現(xiàn)的成本高筷畦、耗時長等問題。
因此刺洒,該變革以跨平臺開發(fā)的形式出現(xiàn)”畋觯現(xiàn)在,維護代碼和開發(fā)應(yīng)用程序?qū)τ陂_發(fā)人員來說變得簡單且省時逆航。
現(xiàn)在鼎文,跨平臺應(yīng)用開發(fā)正在創(chuàng)業(yè)公司中變得越來越流行,相繼出現(xiàn)了多種跨端開發(fā)原生APP的技術(shù)方案因俐。
除了weex只在阿里系的公司用得多外拇惋,react native 和 flutter目前都有大量的公司在使用,并且互相競爭抹剩,試圖證明自己是跨平臺移動應(yīng)用的最合適的王者撑帖。
React native 是 Facebook 2015年開源的,并且很快獲得了大眾的歡迎澳眷。而Google 的 flutter 則是這兩年才火起來的新技術(shù)胡嘿,它優(yōu)勢是更好的性能。
不僅對于資金緊張的初創(chuàng)公司钳踊,即使是大公司的新項目衷敌,初期都需要快速驗證產(chǎn)品的可行性,因此多數(shù)公司都不會選擇原生開發(fā)拓瞪,而是基于跨端技術(shù)缴罗。
那么對于開發(fā)者來說,應(yīng)該選用哪個跨平臺應(yīng)用程序開發(fā)框架比較好呢祭埂?
由于采用react native 和 flutter 的技術(shù)棧項目最多面氓,所以本文主要分享我作為創(chuàng)業(yè)者在做客戶端技術(shù)選型時,最后采納的是使用RN還是flutter的過程。
react native vs flutter
環(huán)境搭建
從當前兩個框架的最新版本來看侧但,搭建原生開發(fā)環(huán)境都是比較復(fù)雜的矢空,相對來講,flutter要容易一些禀横,特別是搭建Android開發(fā)環(huán)境屁药。
編程語言
React Native 允許你使用 Javascript 開發(fā)應(yīng)用程序,通過簡單配置也可以使用微軟維護的Typescript 語言進行開發(fā)柏锄,克服JS作為動態(tài)語言的一些不足酿箭。
由谷歌開發(fā)的 Flutter 提出了一種名為 Dart 的新編程語言。它對于開發(fā)人員來說是新手趾娃,但是那些具有 OOP 語言經(jīng)驗的人缭嫡,比如 C ++ 和 JAVA,可以很容易地學習的抬闷。
IDE 和易于編碼
如果我們討論 React Native 的 IDE妇蛀,那么它幾乎支持所有領(lǐng)先的 IDE。然而笤成,F(xiàn)lutter 受 Android studio / IntelliJ 和 visual studio 代碼支持评架。
代碼結(jié)構(gòu)
Google 的 Dart 沒有模板、樣式和數(shù)據(jù)文件的分離炕泳,因此代碼變得有點難以理解纵诞。
而 Javascript 遵循簡單的代碼結(jié)構(gòu),因此開發(fā)人員更清楚地理解和編寫代碼培遵。
性能
因為 React Native 通過 JS 橋接原生控件浙芙,所以再渲染上肯定不如有一套自己的渲染機制flutter,但肉眼所看的性能體驗基本沒區(qū)別籽腕。
總而言之嗡呼,除了React Native 列表性能比較差外,兩個平臺的性能都有些接近节仿。
穩(wěn)定性
這兩個平臺都得到了領(lǐng)先技術(shù)社區(qū)的支持晤锥,因此對穩(wěn)定性毫無疑問掉蔬,兩者都有很好的穩(wěn)定性廊宪。
我們的決定
客觀講,flutter是google的親兒子女轿,如果目標用戶是安卓居多的話箭启,使用flutter 都比使用Android原生開發(fā)要好,因為官方IDE都在大力推進安卓開發(fā)人員使用flutter蛉迹。
而react-native 雖然不是Google官方提供的傅寡,但由于其中立性,所以對兩個平臺的支持都差不多,且由于一開始只有iOS版本荐操,所以iOS的開發(fā)上更友好芜抒。
由于我們公司未來長遠的業(yè)務(wù)是少兒編程,而此核心系統(tǒng)就是基于react開發(fā)的托启,為了復(fù)用我們的前端人力宅倒,選擇react-native 更合適。
并且由于react-native支持熱更新屯耸,這樣就避免了用戶需要頻繁下載安裝APP的最新版本了拐迁。雖然flutter也可以實現(xiàn)安卓端的熱更新,但是不穩(wěn)定且不是官方支持的疗绣。
同時线召,筆者手上有大量的react-native項目可以參考,所以使用react-native開發(fā)我們的APP是最好的選擇多矮,未來如果性能不滿足要求了缓淹,再考慮使用flutter。