前端工程師想入手ios開發,從react native入手合適么?

對app開發比較感興趣,自己從事的工作又是web開發,最近看到react native,就打算從它開始學習下。

有下面幾個問題:

1.從react native 入手app開發,合適么?

2.react native 目前有哪些坑,這些坑容易填么?

3.學習曲線陡不陡?


react-native對於web開發者來說,是比較容易上手的,而且畢竟facebook出品,整個框架抽象的是非常不錯的。

react-native以我自己的開發體會可以將學習路線歸為4個方面。

1.flexbox布局 (解決RN的靜態UI樣式)

對於web開發者,這個應該是不陌生的。facebook在進行樣式選型的時候應該是考慮到了flexbox和原生app的樣式寫法是最接近的,也是更加靈活的方式。掌握了這個可以說RN的靜態UI展示基本可以handle了。如果不熟悉flexbox,請在學習RN前自行充電。

2.reactJS開發 (理解RN組件化開發的思想與模式)

react-native類似react也是個虛擬UI映射的概念。只不過react是映射dom, 而RN是映射native的UI。 react-native提供了豐富的組件,開發者只需要熟悉組件依賴的props即可。從這個層面上講,RN可以說開發比react簡單多了。所以如果會react的話,開發RN的效率會很高。

3.debug調試以及ES6的實踐 (快速開發及調試方式)

react-native提供的報錯信息非常全面,在開發過程中基本可以看著報錯信息完成bug的修復。

另外,RN提供了豐富的debug方式,包括chrome的debug,UI的樣式檢查和系統利用效率等等。 要是在此基礎上你還熟悉ES6的語法,那麼代碼編寫將會更加高效。

4.大量的代碼實踐 (到這一步,掌握RN唯手熟爾)

react-native對native界面做了很好的封裝,你需要大量的實踐來熟悉各個組件依賴的props及api使用方式。如果你已經掌握了以上3點,那麼這一步只是思考和代碼積累的問題。

最後,對於剛接觸react-native 的程序員,我自己做了套react-native-demo(僅限ios)幫你快速熟悉各個組件的api及開發,剛接觸RN的同學有興趣可以鑒借下。

GitHub - slashhuang/react-native-demo: 使用react-native版本寫的APP組件demo,同時對源代碼添加註釋(由於開發用mac,故暫未兼容安卓)


難。

現在國內用RN做ios app開發的沒幾家,還處於成長階段,前景好,但前景這東西吧......

換句話說,你現在以這個為入手點,硬體成本和學oc,swift是一樣的(你需要一台mac,真機測試還需要一台iphone),既然這樣,我建議先學習主流的原生語言。否則你學RN學的再好,哪天apple改了下審核政策,好嘛,ios和rn就說再見了。

當然,有前端經驗的話學掌握rn還是比較輕鬆的,平時有空的話可以多看看,自己寫點小東西玩,多一個技能總是好的。

正如前幾天主管偷偷告訴我,來年我們公司就要弄一批人用rn重構現在的項目,叫我可以自己慢慢研究起來了。


react-native 的學習文檔,
入門基礎: http://reactnative.cn/docs/0.31/getting-started.html,
看一下這個文檔就能搭建環境。
再看一個開源的電商項目,基本上就能開發內容類和電商類的APP了。
github上有個開源項目shop-react-native,
https://github.com/EleTeam/Shop-React-Native


如果你之前接觸過 React,會非常容易上手。 如果你之前沒接觸過 React,但是接觸過類似的虛擬 DOM (如 Mithril),問題也不大。如果你沒接觸過虛擬 DOM,但接觸過前端 MVC,問題也不大。如果都沒接觸過,先去大致了解一下MVC,然後直接上手 React Native。

React Native 上手非常容易,坐我旁邊的哥們,沒接觸過 iOS 開發,沒接觸過 React,只接觸過前端MVC(mithril),一周就上手了。

你要多動手。

對了,要買一台 Mac


先針對樓主的三個小問題:

1.從react native 入手app開發,合適么?

如果你只是想通過react native 開發原生應用,是絕對沒有什麼問題的。react native 發展到現在,很多大公司,大規模用戶的應用都有使用。大前端的方向現在也是很多前端工程師的一個選擇方向。react native 文檔很齊全,中文版翻譯也很到位,npm 每天都有人發布新的 RN 模塊和組件,即使完全不懂原生App 開發,基本也是沒有太多問題。

2.react native 目前有哪些坑,這些坑容易填么?

從個人體驗來看,也可能是我接觸的比較晚的原因,RN 到現在的 0.42.x ,基本上沒有什麼致命的坑了,至少對於學習,或者小規模業務來說,沒什麼問題了。如果是業務很複雜,平台級應用,涉及到bundle 拆包,動態更新,再者對性能的要求比較高的就另當別論了。

3.學習曲線陡不陡?

學習曲線,如果樓主先前有React 開發經驗,熟悉 JSX語法的話,入門的成本算比較低了。然而這僅僅能達到項目能用的程度。學習曲線個人認為入門還是比較快的,越往後發現不了解原生開發基本上是無能為力了。

這就又回到了最開始的主題上。

前端工程師想入手ios開發,從react native入手合適么?

我的答案是不合適, RN 能讓你開發出原生體驗的App。 卻沒法教會你使用OC 開發IOS 或者Java開發安卓。甚至最後你發現,一些動畫在RN上特別卡頓,由於RN的 js 和 原生模塊之間的通信都是非同步的,js 定時更新動畫狀態,再到原生模塊渲染之間是很慢的,而原生動畫是很快的,於是你可能需要原生模塊提供一個介面,RN只給齣動畫初始狀態和終止狀態,動畫過程完全由原生模塊去執行。RN 能解決的是動態更新,不受發版的限制;一份代碼可以同時運行在兩端。但是RN還是無法達到原生的性能。RN 本質上還是React, 是寫JS, 關於native 這塊,基本都是由框架封裝好。

還是建議先學IOS,或者安卓,至少是同步學習。在完全不了解原生的情況下,你無法了解react native 背後的一些原理,只能根據API做一些簡單的應用,遇到性能問題也只能無能為力。


學習的話建議還是學原生,原生熟了之後可以學學rn。

原生是一日三餐,rn是餐後水果。


已經支持windows開發了,省了mac的前。

不是工作內容的話,還是建議直接玩起來,上手還是比較快,使用過程中慢慢了解。


同上,RN要麼會顛覆apple開發,要麼被蘋果抹除


推薦閱讀:

App Store 上面顯示的應用名字為什麼跟下載之後的名字不一樣?
Vue2 + Nodejs + WebSocket 完成你畫我猜多人在線遊戲
你是我的小呀小蘋果
下拉菜單為何是一種不好的用戶體驗?| 掘金翻譯計劃
業界首個非侵入式熱修復方案Sophix重磅推出,顛覆移動端傳統更新流程!

TAG:工程學 | 前端工程師 | 移動開發 | 工程師 | ReactNative |