引子
有個前端同學說,等我學好了react-native,你們也就快失業了。樓主這小心臟一驚,真的假的,決定開始學習一下react-native。其實之前一直做事native的開發,沒有怎麼接觸過前端,對於React更是比較陌生,雖然從2015年開始它火的一塌糊塗。
這裡記錄一下自己接觸react-native過程中遇到的坑和作為一個native的思考。
環境搭建
React-native for android 都出來快一年的時間了,環境搭建這塊有很多的文章,這裡還是推薦官網的。React-Native 中文網的也不錯環境搭建。
這裡主要說一下自己遇到的坑:
- 編譯執行問題
Android端:
安裝好環境後,直接執行react-native run-android, 該命令實際是直接使用了android目錄下的gradlew命令,執行後這裡報錯了,主要是一些依賴包的問題。這裡使用Android studio匯入工程目錄下的android,然後執行安裝,ok 了。
Ios端
由於之前沒有ios端的經驗,遇到的問題都是小白問題。這裡需要注意的就是xcode要在7以上,然後注意修改AppDelegate.m中的server地址:jsCodeLocation = [NSURL URLWithString:@"http://電腦ip:8081/index.ios.bundle?platform=ios&dev=true"];複製程式碼
- Android手機上選項選單不出現問題
本文中使用的測試機是小米5,剛安裝成功後,正常搖一搖手機可以出除錯選單的,然而並沒有出來,這裡需要設定該應用的懸浮窗許可權,設定後可以使用。
入門基礎
React基礎
當然首先是要有js基礎,學語言個人經驗是先找網上的入門教程也有一個大概的瞭解,這裡推薦廖雪峰的blog,然後就是邊實踐邊學習,有了一定基礎後再去看大部頭的經典教材,一般就會講的比較詳細,主要是知識更系統,原理也會了解不少,讀完後會有一個很大的提升。
react基礎我看了阮一峰老師的部落格,React入門例項教程.React-Native基礎
這裡主要是跟著官網的教程練習就可以了,需要注意不能版本之間的一些區別。同時也要注意es5和es6的一些區別,es5和es6的區別這個文章介紹的比較好。
專案練習
- react-native-android-guide
這裡收集了很多入門的資料,但是有幾個月沒有更新了。體驗了一下文中提到的知乎日報Android版,整體來說效果不錯,但是在介面切換的時候略卡。
react-native-material-design中實現了materal-design,效果不錯,但是作者有段時間沒有更新,如果使用最新的React-native 有些問題。 - awesome-react-native
這個地址在持續更新著學習資料但主要以英文為主,收集非常多react-native專案。這裡fork了專案NBAreact單純覺得nba不錯,哈哈。在原始碼的基礎自己練習了知乎日報的介面。
這個app中使用了react-native-scrollable-tab-view,一個tab切換的庫,react-native-router-flux一個介面跳轉的路由庫,個人認為很值得學習。 - 發現一個不錯的react-native project, 程式碼很整齊,使用了Redux,非常值得學習。
reading github 地址
Debug
debug需要藉助於Chrome瀏覽器,首先下載react 的chrome外掛,然後在應用選單中選擇遠端除錯,即可以進行實時斷點除錯,效果還不錯。
總結
就接觸的幾個開源專案而言,在安卓手機上的應用表現略卡,主要表現在介面切換等動畫上。但開放一套可以適用於兩個端,誘惑力還是很大的。對於原有的native應用可以考慮把一些簡單的介面用react-native來實現。
思考
總體感覺react-native 還是有挺多不完善的地方,與原生程式碼相比,還是有一些差距。但是react-naive 也是在不斷的完善中,有點像早期android,有些常用的庫比較缺失,可以考慮按照native的思路多造一些輪子。特別是android作為一個開源的系統,很多思路都可以應用於react-native。比如介面切換的路由設定、資料傳遞等,theme,style的通用實現等,native的同學可以考慮把這些功能加入到react-native中。願react-native有一個美好的前景。