先看看React-Native的介紹。前端
React Native (簡稱RN)是Facebook於2015年4月開源的跨平臺移動應用開發框架,是Facebook早先開源的JS框架 React 在原生移動應用平臺的衍生產物,目前支持iOS和安卓兩大平臺。RN使用Javascript語言,相似於HTML的JSX,以及CSS來開發移動應用,所以熟悉Web前端開發的技術人員只需不多的學習就能夠進入移動應用開發領域。
React Native使你可以在Javascript和React的基礎上得到徹底一致的開發體驗,構建世界一流的原生APP。
React Native着力於提升多平臺開發的開發效率 —— 僅需學習一次,編寫任何平臺。( Learn once, write anywhere)。
更詳細的介紹,請自行百度或者谷歌。程序員
看完介紹感受好牛逼啊,這麼強大,學習一次,編寫如何平臺,還有關鍵的一句熟悉Web前端開發的技術人員只需不多的學習就能夠進入移動應用開發領域。吹的天花亂墜,實際用它來開發的時候,你就會發現,TMD的就是一坨翔,一坨想作移動前端,而不想系統學習原生開發的人員吹捧吹來的一坨翔。web
假如你真的是熟悉web前端的開發,而不熟悉iOS和Android的原生開發,看了React-native的介紹而選擇了使用它開發移動前端,能夠實話告訴你,能坑得你吐血,由於你根本不會寫兩個平臺的橋接代碼。typescript
實際開發的過程當中,須要寫不少的橋接代碼,才能開發完成一個完整的App。只靠React-native自己是根本完成不了一個複雜的App的。網上的各類吹捧,使用React-native如何如何好,那是由於大部分只是使用React-native快速搭建了一個demo,固然也有使用React-native加不少橋接代碼,艱難的開發完成一個App的,可是其中的酸爽,應該只有開發者本身知道吧。瀏覽器
性能方面,吹噓的是很接近原生的性能,我就呵呵了,原生開發完都還須要進行性能檢測和調優,因此React-native用了一個婉轉的詞很接近,實際上呢,就是誰用誰知道。舉個經常使用的組件-列表。React-native中的經常使用列表有三種ListView
,FlatList
,SectionList
,性能嘛,就很少說了,尤爲是長列表,那效果和原生差了不是一點半點,並且TMD的FlatList
&SectionList
還會出現只渲染第一屏(initialNumToRender
設置的第一屏渲染的數據條數)這種靈異事件,低端機上尤爲容易出現,性能牛逼的機器出現的少一些。
列表組件是移動開發及其經常使用的組件了吧,React-native封裝那三個組件簡直能搞死你。weex
開發中,各類屬性和方法,只支持一個平臺也很多,不少的時候,須要判斷平臺,寫兩套代碼。要實現的一些功能,辛辛苦苦從網上找到第三方組件,通過一番折騰,最後發現只能再iOS上出效果,不支持Android,或者只支持Android不支持iOS的也時有發生。框架
開發過程當中iOS和Android的開發都有斷點調試,固然React-native也有,在瀏覽器裏調試,並且有的地方根本打不上斷點(咱們使用的typescript
),難用的要死,只能依靠打印log進行調試。性能
連真機調試的時候,React-native 的debug App會快速佔掉你手機的存儲空間,我曾今就遇到過,早上的時候手機還有接近3G的存儲空間,到晚上調試的時候,手機的存儲空間就不足了。從空間管理一看,正在開發的App佔用了2.7G的存儲空間,果斷刪除了,新裝的包才100M左右,調試一成天,體積竟然快速增加了27倍左右,不得不說,牛逼至極。若是你用React-native連真機開發App,從開始到App發版,中間不刪除重裝,會佔掉手機的多少存儲空間就不得而知了。學習
移動端iOS和Android的爸爸分別是蘋果公司和谷歌公司。React-native的爸爸-Facebook,它自己就不是移動開發的原創,並且據瞭解,他們本身都不怎麼用React-native進行移動應用的開發。spa
至於weex它的爸爸是阿里,沒有用過,不作評價。
使用React-native進行移動應用的開發,不可預測性不少,你永遠不知道何時會掉到坑裏,通過艱難的掙扎,爬出那個坑,而後再掉進新的坑裏,最後從一個文明的程序員在React-native的開發中,學會了各類髒話。
國內目前作的牛逼的App,仍是使用的原生開發,目前沒有據說國內那個牛逼的App是使用的React-native開發。至於國外嘛,曾經用的最好的Airbnb已經公開宣佈棄用。
最大的隱患是蘋果那天不讓用React-native開發的應用上架,那麼就完全涼了。
要作牛逼的App,原生纔是王道,纔是正道,才能夠穩操勝券。