關(guān)于為什么學(xué)習(xí)React Native三點(diǎn)原因

React Native不到兩歲,兼容Android平臺剛剛1年。我學(xué)習(xí)React Native其實也就不到1年,不算長,也不算短。

Paul Graham在文章中寫過:大多數(shù)人真正注意到你的時候,不是第一眼看到你站在那里,而是發(fā)現(xiàn)了過了這么久你居然還在那里。

我就是Paul提到的"大多數(shù)人",當(dāng)React Native剛出來的時候,我就通過CSDN等一些平臺了解了React Native,但是并沒有真正的關(guān)注它。

過了半年多,發(fā)現(xiàn)React Native不但還依然存在,而且還產(chǎn)生了不錯的React Native社區(qū)。從此開始逐漸關(guān)注React Native。

至于為什么深入學(xué)習(xí)React Native,有以下幾點(diǎn)原因。

一、開發(fā)React Native很少使用設(shè)計模式

對,你沒有看錯,確實是很少使用設(shè)計模式。有人會問我,這也算學(xué)習(xí)的理由?
我先擱置一下,先給大家講個絕大多數(shù)人都聽過的故事。

金庸小說中獨(dú)孤求敗的劍冢中,埋的是獨(dú)孤求敗一生幾個階段中用過的幾柄劍。


第一柄是一柄青光閃閃的無名利劍。凌厲剛猛,無堅不摧,弱冠前以之與河朔群雄爭鋒。
第二柄是紫薇軟劍,三十歲前所用,誤傷義士不祥,乃棄之深谷。
第三柄是玄鐵重劍,重劍無鋒,大巧不工,四十歲之前恃之橫行天下。
第四柄是柄已腐朽的木劍,原因是獨(dú)孤求敗「四十歲后,不滯于物,草木竹石均可為劍」

獨(dú)孤求敗一生境界階段分為利劍級、軟劍級、重劍級、木劍級,對應(yīng)用不同的武器。

而程序員編程階段同樣分為幾個階段。

  1. 利劍級,利劍招式一般直接。剛?cè)肼殘龅某绦騿T,技術(shù)有限,一般都是以實現(xiàn)功能為主要任務(wù),不考慮性能,模式。
  2. 軟劍級,就是在招式已經(jīng)發(fā)揮到極致的基礎(chǔ)上追求變化的極致;當(dāng)程序員迭代過幾次項目,就會認(rèn)識到程序存在的問題,代碼也會更加規(guī)范。
  3. 重劍級,相比于軟劍是一種質(zhì)的飛躍;當(dāng)程序員工作多年后,做過好多項目,慢慢就會了解各種模式,融會貫通,達(dá)到架構(gòu)師的高度。
  4. 木劍級,基本上達(dá)到人劍合一的境界; 這也是我主要要講的境界,能夠回到程序的本質(zhì)。

回到程序的本質(zhì),程序的形式應(yīng)該僅僅反應(yīng)它所要解決的問題。

當(dāng)我們開發(fā)程序一段時間后,就會發(fā)現(xiàn)編程已經(jīng)變得制度化了,尤其是使用面向?qū)ο蟮恼Z言,我們大量聽到 模式(pattern)這個詞,但是我們應(yīng)該想到模式并不應(yīng)該存在的。
程序就是為了要解決問題,而在代碼中其它任何外加的形式都是在告訴我們,表明對問題的抽象不夠深,這些原本應(yīng)該讓編程語言本身去實現(xiàn)。

當(dāng)我使用原生代碼開發(fā)Android程序的時候,用到了大量設(shè)計模式——工廠設(shè)計模式,適配器設(shè)計模式,單例設(shè)計模式等等一大堆。一開始的時候自我感覺良好,認(rèn)為自己很牛逼,面試別人或者自己去面試時都會顯擺下。后來我就想,Android框架為什么不提供更深的抽象,讓我直接實現(xiàn)具體的功能,而不用使用各種模式搭建各種框架呢?

當(dāng)我接觸React Native時,雖然React Native也需要用到一些模式(現(xiàn)階段很難避免的),但是React Native整體設(shè)計架構(gòu)要比Android強(qiáng)很多,非常直接。

舉個例子,在React Native開發(fā)中,我們要改的數(shù)據(jù)統(tǒng)一放在狀態(tài)機(jī)中,只要改動狀態(tài)機(jī)里的數(shù)據(jù),界面上不管有多少處,只要和改動的數(shù)據(jù)相關(guān)聯(lián)都會發(fā)生改變。而在Android原生開發(fā)中,可能需要把多處要改變的封裝到一起,進(jìn)行操作,無疑多了一步封裝。

代碼更加直接,就意味著程序更加好維護(hù)。程序更好維護(hù),就意味著成本更低。

二、學(xué)習(xí)成本比較高

第二點(diǎn)讓我學(xué)習(xí)的理由就是React Native學(xué)習(xí)成本相對比較高,也許之前的理由你接受了,這個可能又會讓你抓狂,為什么學(xué)習(xí)成本高還要去學(xué)習(xí)???

往往學(xué)習(xí)成本高的才更加值得去學(xué)習(xí)!

React Native學(xué)習(xí)成本確實很高,
你首先肯定需要學(xué)習(xí)JSX語法,React知識,學(xué)習(xí)ES6,函數(shù)式編程思想。如果你想了解React Native構(gòu)建的還需要學(xué)習(xí)nodejs。封裝原生組件還需要學(xué)習(xí) java,object-c,swift, 也就是需要學(xué)習(xí)Android和ios原生開發(fā)。設(shè)計到通訊原理還需要了解C++。

有些程序員可能會因為想炫耀自己見多識廣,會告訴你“所有編程語言基本相似”,“語言不重要,重要的是理解”;其實上面說的是一派胡言,每種語言從語法到概念,都不一樣。你學(xué)會其中一門語言對你學(xué)另一門語言的好處就是你可以進(jìn)行對比,加深學(xué)習(xí)的印象。

雖然學(xué)習(xí)成本很高,但是通過學(xué)習(xí)React Native而掌握這么多技術(shù)并不是什么壞事。React Native其實就把各種知識打成一個壓縮包,讓我們更有效率的學(xué)習(xí)。

React Native技術(shù),同時具備可測量性和可放大性。

React Native既可以開發(fā)Android也可以開發(fā)IOS,尤其是寫界面的速度非???。通過測量完成的程序,理論上你可以是一名普通的Android/IOS程序員的兩倍。

微軟也開發(fā)了Windows Phone的React Native版本。通過React知識,你可以輕松寫出Web端程序。甚至在微信小程序中都能找到React Native的影子。

我們這個世界,你向下沉淪或者向上奮進(jìn)都取決于你自己,不能把原因推給外界。有些剛畢業(yè)的學(xué)生一聽到5%的人占社會50%的財富,往往認(rèn)為是不公平的。從程序員的角度,我也認(rèn)為是不公平的,因為5%的程序員寫出了全世界99%的優(yōu)秀軟件,他們就應(yīng)該占更高比例的收入。

一個React Native程序員就應(yīng)該是一個普通的Android/iOS程序員工資的兩倍,并沒有什么問題。

三、React Native還不是很完善

React Native還有很多坑,并不完善,React Native幾乎每個月都有新的小版本發(fā)布,至今還沒有推出1.0正式版本。這也恰恰使我們學(xué)習(xí)React Native的理由!

前幾年,我在北京上班時經(jīng)常聽到j(luò)avaEE程序員抱怨自己開發(fā)了這么多年不如一個新入職的Android/iOS程序員工資高。
其實很好理解啊,難道不知道技術(shù)越新越值錢這個道理嗎?

程序員就像蚊子一樣,群體很多,在后廠村路上10個估計有7個是程序員,但是每個程序員個體壓力又很大,想生存必須吸取新鮮的血液。

目前使用React Native的公司不是很多,當(dāng)你作為一個產(chǎn)品經(jīng)理或CTO時,你肯定優(yōu)先跟隨大多數(shù)人的選擇的做法,有個專業(yè)術(shù)語叫做“業(yè)界最佳實踐”。因為這個詞出現(xiàn)的原因就是為了產(chǎn)品經(jīng)理/CTO 推卸責(zé)任。既然我選擇的是“業(yè)界最佳實踐”,如果不成功,不是我的問題,而是“業(yè)界”的問題。

但是如果你是一名程序員按照上面的做法你會死的很慘,因為“業(yè)界最佳實踐”會逐漸變化的,一旦你掌握的技能不是“業(yè)界最佳實踐”了,你就要想辦法讓你的房貸別斷供了。

React Native不會取代Android/iOS原生開發(fā),但隨著React Native正式版推出,也許它就變成了“業(yè)界最佳實踐”了。

關(guān)于如何學(xué)習(xí)React Native

如果想快速入門React Native,官方Api是肯定需要看的。里面不但有文檔而且有例子,涵蓋了絕大多數(shù)知識。
http://facebook.github.io/react-native/docs/getting-started.html
英文不好的話,可以參考react-native中文文檔(建議也要對比英文文檔)
http://react-native.cn/docs/getting-started.html

FaceBook官方也提供了演示App,可以作為參考
https://github.com/facebook/react-native/tree/master/Examples
facebook開源的f8項目也是蠻不錯的
https://github.com/fbsamples/f8app

總結(jié)

沒有人有任何義務(wù)去看任何一篇文章,當(dāng)您點(diǎn)擊我的文章時就已經(jīng)很看得起我了,我非常感謝您,也許我的觀點(diǎn)并不是對的,但是我相信時刻保持一顆學(xué)習(xí)的心永遠(yuǎn)是對的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容