React Native - 搭建開發環境

首先讓我們先來初步了解下React Native。

React Native是Facebook于2015年年初推出的一個開源框架,實現以JavaScript開發移動應用。該框架基于Facebook于2013年推出React框架,但是支持原生控件調用。框架目前只推出了iOS平臺,但已經受到國內外移動開發者的追捧。從GitHub上的統計數據看,自React Native開源至現在的3個月時間,已經有170位貢獻者對項目進行了1790余次的提交。

最近React Native吸引了越來越多的人去關注。漸漸的越來越多的App開始應用React Native來開發。究竟為什么React Native會受到眾多企業的歡迎呢?

站在企業的就角度上分析,選擇React Native的4個理由:

1. JavaScript使用門檻低

JavaScript是Netscape公司開發的一種基于瀏覽器客戶端的、面向對象的、解釋性的腳本語言,JavaScript語言的特點:
?語法簡單、使用靈活
?跨平臺:所有的移動、PC平臺都集成了內置瀏覽器,對JavaScript有很好的支持
?事件驅動式的設計思想,使開發思路更清晰
?單線程處理,沒有復雜的線程機制 由于JavaScript在WEB前端擁有強大的技術優勢,幾乎100%的網頁腳本語言都采用的是JavaScript.

2. 使用JavaScript開發,開發成本低

使用JavaScript做開發,瀏覽器兼容問題一直是一個讓開發者很棘手的問題。而在移動端(iOS和Android平臺上),由于內置瀏覽器都采用Webkit內核,因而在使用JavaScript開發時,完全無需考慮瀏覽器兼容問題,進一步降低了JavaScript的開發成本,這也是眾多跨平臺開發工具采用JavaScript的原因之一。

React Native采用了JSX語法糖工具。JSX是一種語法轉換工具,能夠將XML標簽轉換為JavaScript代碼。這意味著,你可以在JavaScript里像寫XML一樣去寫JavaScript代碼,不用手動拼接XML格式的字符串,不用顯示地創建標簽和執行插入標簽操作,而且這樣寫出來的代碼可讀性非常強。

3.原生UI,UI交互效率高

在React Native之前,跨平臺的JavaScript移動端解決方案,都是采用WEB開發模式,開發出來的都是增強版的WEB應用。但由于瀏覽器的限制:單線程、DOM渲染效率低等原因,WEB頁面在移動端的交互體驗非常差,和原生應用的體驗相距甚遠。這也是JavaScript跨平臺解決方案有很多,但原生開發仍然不可替代的原因。
React Native另辟蹊徑,未采用WEB模式,而是使用JavaScript去開發原生應用。React Native自己實現了一套與原生語言通訊的機制,將JavaScript視為數據源,用原生語言去調用數據源,然后用原生UI來展示,用原生語言來實現事件機制,這樣便不再有瀏覽器單線程、DOM渲染效率低導致的交互體驗差的問題。由于JavaScript和原生語言的運行效率很高,因而應用交互體驗非常好,堪比原生應用。

4. Facebook的技術支撐

Facebook于13年5月份開源了React項目,而在15年才開源基于React的React Native項目,由此可見,Facebook在前端布局已久,React Native的面世、可謂厚積薄發。Facebook有很強大的開發團隊在開發和維護React、React Native項目,而有這樣背景的公司在支持,React Native項目勢必會有飛速的發展。 React Native是一種思想,有太多值得借鑒的東西,同時,也是一個奇跡。然而,React Native也有很多不足:

  1. 對于開發者,他們更希望"Write Once,Run Anywhere",這樣可以大大降低開發者的開發成本;然而React Native主張"Learn Once, Write Anywhere",這樣就要求開發者為每個平臺分別開發。相信這里面會有一些可以復用的模塊,但是在其他平臺都采用"Write Once,Run Anywhere"模式的情況下,React Native的開發成本還是相對較高。
  2. React Native只推出了iOS平臺的開發工具,Android平臺尚未推出(預計推出時間為2015年10月份)。Android平臺的表現是否會向iOS平臺這樣優秀?是否需要單獨的學習的成本?iOS代碼在Android平臺的復用性有多大?這些不確定性,必然會增加使用React Native的風險。
    作為一個新生的產品,React Native能在移動開發領域創造如此多的概念式突破,儼然已經是一個奇跡。對這樣一個產品,我們需要做的,應該是關注、期待,和支持.

工欲善其事,必先利其器。有了大概的了解,接下來我們進入本文的正題,搭建開發環境。

安裝

必需的軟件

Homebrew

Homebrew, Mac系統的包管理器,用于安裝NodeJS和一些其他必需的工具軟件。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

譯注:在Max OS X 10.11(El Capitan)版本中,homebrew在安裝軟件時可能會碰到/usr/local
目錄不可寫的權限問題。可以使用下面的命令修復:

sudo chown -R `whoami` /usr/local

Node

使用Homebrew來安裝Node.js.
React Native目前需要NodeJS 5.0或更高版本。本文發布時Homebrew默認安裝的是最新版本,一般都滿足要求。

brew install node

安裝完node后建議設置npm鏡像以加速后面的過程(或使用科學上網工具)。注意:不要使用cnpm!cnpm安裝的模塊路徑比較奇怪,packager不能正常識別!

npm config set registry https://registry.npm.taobao.org --
globalnpm config set disturl https://npm.taobao.org/dist --global

Yarn、React Native的命令行工具(react-native-cli)

Yarn是Facebook提供的替代npm的工具,可以加速node模塊的下載。React Native的命令行工具用于執行創建、初始化、更新項目、運行打包服務(packager)等任務。

npm install -g yarn react-native-cli

安裝完yarn后同理也要設置鏡像源:

yarn config set registry https://registry.npm.taobao.org --
globalyarn config set disturl https://npm.taobao.org/dist --global

如果你看到EACCES: permission denied。這樣的權限報錯,那么請參照上文的homebrew譯注,修復/usr/local
目錄的所有權:

sudo chown -R `whoami` /usr/local

Xcode

React Native目前需要Xcode 8.0 或更高版本。你可以通過App Store或是到Apple開發者官網上下載。這一步驟會同時安裝Xcode IDE和Xcode的命令行工具。
雖然一般來說命令行工具都是默認安裝了,但你最好還是啟動Xcode,并在Xcode | Preferences | Locations,菜單中檢查一下是否裝有某個版本的Command Line Tools。Xcode的命令行工具中也包含一些必須的工具,比如git等。

推薦安裝的工具

Watchman

Watchman是由Facebook提供的監視文件系統變更的工具。安裝此工具可以提高開發時的性能(packager可以快速捕捉文件的變化從而實現實時刷新)。

brew install watchman

Flow

Flow是一個靜態的JS類型檢查工具。譯注:你在很多示例中看到的奇奇怪怪的冒號問號,以及方法參數中像類型一樣的寫法,都是屬于這個flow工具的語法。這一語法并不屬于ES標準,只是Facebook自家的代碼規范。所以新手可以直接跳過(即不需要安裝這一工具,也不建議去費力學習flow相關語法)。

brew install flow

Nuclide

Nuclide(此鏈接需要科學上網)是由Facebook提供的基于atom的集成開發環境,可用于編寫、運行調試React Native應用。點擊這里閱讀Nuclide的入門文檔
譯注:我們更推薦使用WebStormSublime Text來編寫React Native應用。

測試安裝

react-native init AwesomeProjectcd AwesomeProjectreact-native run-ios

提示:你可以使用--version
參數創建指定版本的項目。例如react-native init MyApp --version 0.39.2。注意版本號必須精確到兩個小數點。

你也可以在Nuclide中打開AwesomeProject
文件夾 然后運行,或是雙擊ios/AwesomeProject.xcodeproj文件然后在Xcode中點擊Run按鈕。

修改項目

現在你已經成功運行了項目,我們可以開始嘗試動手改一改了:

使用你喜歡的編輯器打開index.ios.js并隨便改上幾行。
在iOS Emulator中按下?-R就可以刷新APP并看到你的最新修改!

恭喜!你已經成功運行并修改了你的第一個React Native應用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容