React Native雜談

JacquelynRe 8年前發布 | 29K 次閱讀 ReactNative 移動開發 React Native

reactivecocoa 一樣, react-native 也很早就開始關注了,之所以到前段時間才學習,原因有幾點

  • 整個項目已經相對成熟
  • 國內外社區比較活躍
  • JavaScript和React學習成本并沒有想象的那么高

對這前兩個原因我覺得有必要詳細說明下,下面的內容我會用RN縮寫來代替react-native

RN的更新頻率很高,從目前來看差不多半個多月一個版本,從去年的3月底發布一個版本 0.1.0 以來到現在的 0.25.0 為止一共發布了82個版本,當然這里面包含很多rc版,而且從Star數來看RN已經成為非死book排名第二的開源項目了,可見非死book對RN的重視程度。

其實影響一個項目的流行程度很大一部分取決于其社區的活躍程度,RN社區現在這么活躍也是得益于非死book的推廣,比如這兩年的F8大會、開源基于Atom的IDE: nuclide 、第三方庫搜索網站 js.coach ,以及自家的 非死book Ads Manager 和 非死book Groups 項目使用RN開發等,國內的也有不錯的交流平臺,比如 react native中文社區 。另外github上兩個RN學習資料、組件等的集合項目 awesome-react-nativereact-native-guide 都是不錯的指引。

我挑了幾個大家比較關心的問題一一說下自己的看法和理解

學習成本

我想對于學習一項新技能,都會首先去了解需要什么基本條件。對于RN來說,需要的當然就是JavaScript和React基礎,但我并沒有刻意的去學習JavaScript和React,而是直接上手RN的同時了解和學習這兩樣。個人認為對于有開發經驗的程序員來說,語法并不是問題,即使對于JavaScript這種我認為很”隨便”的語言也是一樣,所以當你想學習RN但是沒有JavaScript和React經驗,根本不用擔心因為沒有基礎給你帶來多大的阻礙。

性能

關于性能問題有很多文章都分析過,我只說自己的主觀感受,對于iOS而言,只要不是非常復雜的頁面性能基本接近native,不過有時候你可能會在頁面切換的時候察覺到略微的卡頓。安卓可能是平臺或者RN優化的問題,目前性能表現不是非常理想,不過完全可以接受。這里需要提一下,RN上的動畫會對性能造成一定的影響,所以并不建議使用大量動畫,官網也有文檔闡述了性能問題以及出現的原因,如果遇到性能問題,強烈建議仔細閱讀。

實際應用

完全用RN來寫一個商業項目我想會遇到以下問題:

  • 多少會涉及到native平臺的代碼,除非你的項目非常簡單,沒有涉及到第三方平臺(第三方分享、登錄),沒有復雜的頁面,沒有復雜的處理,沒有復雜的動畫。舉個例子,比如APP有清除緩存功能,那么你必須得寫兩套代碼,個人認為無論RN迭代到什么程度,都還是有無法同時滿足兩個平臺的情況,這時候就需要依靠第三方庫了。
  • 平臺之間的UI差異,RN的理念是 write once, run anywhere ,所以你還是需要做好適配平臺的準備,這是幾乎也是無法避免的,另外可能相同的控件在不同平臺上的表現也有差異,我曾經遇到過 TextInput 控件的 placeholder 位置在兩個平臺下位置不同情況。
  • 動畫,前面我也提到動畫對于性能會存在一定的影響,而且復雜的動畫對于RN來說是非常困難的
  • RN本身的bug問題,這個問題或許在早期版本尤為突出,一旦遇到只能寄希望于RN團隊盡快解決,這種對于商業項目就較為麻煩了

另外對于初學者,MAC平臺我推薦使用編輯器: Atom ,配合前面提到的基于Atom的IDE: nuclide ,再加上幾個Atom插件:

來自: http://bawn.github.io/react native/2016/04/15/ReactNative.html

 本文由用戶 JacquelynRe 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!