React Native? 路線
基本路線如下:
1.詳細了解 JavaScript
2.詳細了解 React
3.詳細了解 React Native
4.其他(比如說 Redux)
JavaScript
? 了解 JavaScript 的繼承和原型鏈機制,同時包括 JavaScript 的對象模型。
參考資料:JavaScript_MDN格粪,ECMAScript6 入門雷猪,JavaScript文檔
? ? ? 從 MDN 的 JavaScript 教程開始學習待锈,這是 JavaScript 的基礎知識篡帕,有一定編程經(jīng)驗在初級部分可以看的快一點彩倚,關(guān)于JavaScript 對象入門姥卢、繼承與原型鏈卷要、對象模型的細節(jié)要著重詳細的看。如果跳著看思路跟不上独榴,可以從頭到尾仔細的看一遍僧叉。 MDN 的教程看完之后后就可以看 ES6 相關(guān)內(nèi)容了」桌疲可以看 ruanyifeng 的 ES6 網(wǎng)上教程瓶堕,也可以看 MDN 的JavaScript指南,兩者可以對比的看症歇。關(guān)鍵要理解 ES6 的模塊(Module), 重點:Module語法?和?Module 的加載實現(xiàn)和基本的 ES6 語法郎笆。在看的過程中有些內(nèi)容可能不懂,可以跳過忘晤,在寫代碼或碰到相關(guān)代碼碰到的時宛蚓,回過頭來看,記住有這么一個東西即可设塔。也可以對比一下與其他語言在這方面的不同和相同(lg: Java 程序員凄吏,學習 JavaScript,就可以對比一下 Java 的繼承和 JavaScript 的繼承)闰蛔,同時可以加深你對 JavaScript 的理解痕钢。
? ? 看完這些 JavaScript 已經(jīng)入門了。JavaScript 是弱類型語言序六,代碼寫著寫著就不知道當前函數(shù)的參數(shù)定義是什么任连。不知道一個東西確定是什么是很痛苦的(你可以想象一下.....)。TypeScript 是微軟的一個比較流行的解決這類問題的方案例诀,是給 JavaScript 加上 類型随抠。如果你碰到類似問題,TypeScript 就是你的解決方案繁涂。
React
? ? ? ?根據(jù) React Native 的官方文檔來學習暮刃。了解 React 是很關(guān)鍵的。喜歡立即上手的人爆土,可以先不看 React 相關(guān)的內(nèi)容椭懊,直接學習 RN。但寫了一定量的代碼以后,會碰到一些問題(如何復用組件氧猬,如何處理一些不是很常見的操作背犯,如何處理數(shù)據(jù)等等),這時候你就可以開始去了解 React 了盅抚。
了解 React 當然是官方文檔:
內(nèi)容是一樣的漠魏。
(建議:能夠全部看完所有內(nèi)容,不要忽略任何一個地方妄均,當然文檔是不夠的柱锹,我覺得有時間一定要理解一下 React 的實現(xiàn)原理)
React Native
? ? ?強調(diào)一下,學習 RN 可以先不了解 JavaScript 和 React(前提是你要有一點編程經(jīng)驗丰包,如果是大神的話禁熏,請隨意)。喜歡立即上手的可以直接根據(jù)官方文檔上手邑彪,不過要深入了解 RN瞧毙,則必須要了解 React 和 JavaScript。
RN? 關(guān)鍵了解使用的部分如下:
FlexBox :一個前端布局的方式,寫界面的時候一定要了解有巧,否則界面就構(gòu)建不出來各種 UI 組件的使用释漆、屬性等,可邊寫代碼邊使用
網(wǎng)絡請求 : 所有的客戶端都有網(wǎng)絡請求篮迎,所以這個也很關(guān)鍵男图。有一個框架?axios?可以嘗試使用,這是一個 HTTP 客戶端框架如何與(原生代碼交互柑潦,iOS 相關(guān)文檔地址?iOS Native Modules、iOS Native UI Components峻凫,Android 相關(guān)文檔?Android Native Modules渗鬼、Android Native UI Components)。
數(shù)據(jù)存儲:使用 RealmJS 或者原生的 AsyncStorage荧琼,使用 RealmJS 的問題是譬胎,如果你的 iOS 原生項目已經(jīng)使用了 RealmSwift 等的話,會導致符號沖突命锄,無法通過編譯堰乔。(坑:建議在原生項目上添加 RN 支持,文檔地址集成到現(xiàn)有原生應用脐恩。如果使用?create-react-native-app AwesomeProject?命令來生成一個 RN 項目镐侯,會引入 Expo 這種東西,不建議使用此類框架驶冒。不建議使用?NavigatorIOS?這類組件苟翻,推薦?React Navigation韵卤,但是這個開源組件坑也比較多,不過個人認為還是比 RN 提供的組件要好)崇猫。其他Redux沈条,Redux 是一個關(guān)于數(shù)據(jù)流的前端框架,也可以用在 RN 中诅炉。其他還有類似的比如 MobX(據(jù)說新版 React 有種 Context API 可以讓我們告別使用 Redux蜡歹,應該是比較新的東西)。
開始可以不使用 Redux涕烧,Redux 的官網(wǎng)也提示說如果不知道要不要使用 Redux月而,則不要使用 Redux。
學習文檔:Redux 英文官方文檔(中文版)
理解 Redux 比較關(guān)鍵的是它的狀態(tài)樹澈魄,所有的操作最終會反應到狀態(tài)樹上景鼠,所有的操作也是圍繞狀態(tài)樹展開來的。所以一開始做客戶端的時候設計一個比較貼切的狀態(tài)樹很關(guān)鍵痹扇。
進階
1)打包
2)熱更新
3)與原生交互
4)RN 原生實現(xiàn)原理
參考資料:
開發(fā)環(huán)境
1.Atom(卡)2.Visual Studio Code? (配置 TypeScript 環(huán)境铛漓,demo)
注意:
? ? ??需要掌握RN的要求還是有一定知識度的,既要了解前段的相關(guān)知識鲫构,又要了解Android和iOS的原生知識浓恶。純 JavaScript 的 RN 項目不現(xiàn)實,建議原生使用RN,不要以RN為主结笨。不建議使用其他類似 RN 的解決方案包晰,比如說 Weex。 RN 的生態(tài)環(huán)境是很活躍的炕吸,GitHub 有很多開發(fā)者共享的開源代碼伐憾,很多人也在 GitHub 和 stackoverflow 上討論自己碰到的 RN 相關(guān)的問題。但是即使如此赫模,RN 還是沒有出 1.0 版本树肃,而且在實際使用過程中經(jīng)常要自己造輪子,也會碰到很多奇奇怪怪的問題瀑罗,導致拖累開發(fā)速度胸嘴,從學習角度不是問題,但是工作就不一樣了斩祭。所以使用 Weex 情況可能更糟糕劣像。
conclusion:
React Native的學習過程更像是在學習React的前端開發(fā),最大的區(qū)別就是瀏覽器和移動設備而已摧玫。但是換個角度來想耳奕,原生移動勢微的情況下,從React Native入手前段開發(fā)也不錯。在學習當中結(jié)合自己相關(guān)的開發(fā)知識吮铭,對比React Native时迫,能更快鞏固React Native相關(guān)知識,也加強了對自己的知識點加深谓晌。