爲什麼學習React Native三點原因

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

Paul Graham在文章中寫過:大多數人真正注意到你的時候,不是第一眼看到你站在那裏,而是發現了過了這麼久你居然還在那裏。

我就是Paul提到的”大多數人”,當React Native剛出來的時候,我就通過CSDN等一些平臺瞭解了React Native,但是並沒有真正的關注它。

過了半年多,發現React Native不但還依然存在,而且還產生了不錯的React Native社區。從此開始逐漸關注React Native。

至於爲什麼深入學習React Native,有以下幾點原因。

一、開發React Native很少使用設計模式

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

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

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

獨孤求敗一生境界階段分爲利劍級、軟劍級、重劍級、木劍級,對應用不同的武器。

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

  1. 利劍級,利劍招式一般直接。剛入職場的程序員,技術有限,一般都是以實現功能爲主要任務,不考慮性能,模式。
  2. 軟劍級,就是在招式已經發揮到極致的基礎上追求變化的極致;當程序員迭代過幾次項目,就會認識到程序存在的問題,代碼也會更加規範。
  3. 重劍級,相比於軟劍是一種質的飛躍;當程序員工作多年後,做過好多項目,慢慢就會了解各種模式,融會貫通,達到架構師的高度。
  4. 木劍級,基本上達到人劍合一的境界; 這也是我主要要講的境界,能夠回到程序的本質。

回到程序的本質,程序的形式應該僅僅反應它所要解決的問題。

當我們開發程序一段時間後,就會發現編程已經變得制度化了,尤其是使用面向對象的語言,我們大量聽到 模式(pattern)這個詞,但是我們應該想到模式並不應該存在的。
程序就是爲了要解決問題,而在代碼中其它任何外加的形式都是在告訴我們,表明對問題的抽象不夠深,這些原本應該讓編程語言本身去實現。

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

當我接觸React Native時,雖然React Native也需要用到一些模式(現階段很難避免的),但是React Native整體設計架構要比Android強很多,非常直接。

舉個例子,在React Native開發中,我們要改的數據統一放在狀態機中,只要改動狀態機裏的數據,界面上不管有多少處,只要和改動的數據相關聯都會發生改變。而在Android原生開發中,可能需要把多處要改變的封裝到一起,進行操作,無疑多了一步封裝。

代碼更加直接,就意味着程序更加好維護。程序更好維護,就意味着成本更低。

二、學習成本比較高

第二點讓我學習的理由就是React Native學習成本相對比較高,也許之前的理由你接受了,這個可能又會讓你抓狂,爲什麼學習成本高還要去學習啊?

往往學習成本高的才更加值得去學習!

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

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

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

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

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

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

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

一個React Native程序員就應該是一個普通的Android/iOS程序員工資的兩倍,並沒有什麼問題。

三、React Native還不是很完善

React Native還有很多坑,並不完善,React Native幾乎每個月都有新的小版本發佈,至今還沒有推出1.0正式版本。這也恰恰使我們學習React Native的理由!

前幾年,我在北京上班時經常聽到javaEE程序員抱怨自己開發了這麼多年不如一個新入職的Android/iOS程序員工資高。
其實很好理解啊,難道不知道技術越新越值錢這個道理嗎?

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

目前使用React Native的公司不是很多,當你作爲一個產品經理或CTO時,你肯定優先跟隨大多數人的選擇的做法,有個專業術語叫做“業界最佳實踐”。因爲這個詞出現的原因就是爲了產品經理/CTO 推卸責任。既然我選擇的是“業界最佳實踐”,如果不成功,不是我的問題,而是“業界”的問題。

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

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

關於如何學習React Native

如果想快速入門React Native,官方Api是肯定需要看的。裏面不但有文檔而且有例子,涵蓋了絕大多數知識。
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

最後強烈推薦CSDN 提供React Native知識庫, 裏面涵蓋了許多大牛對React Native知識的分享,能學到最新最全的知識。
http://lib.csdn.net/base/reactnative

總結

沒有人有任何義務去看任何一篇文章,當您點擊我的文章時就已經很看得起我了,我非常感謝您,也許我的觀點並不是對的,但是我相信時刻保持一顆學習的心永遠是對的。

更多精彩請關注微信公衆賬號likeDev
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章