參考React Native 中文網(wǎng)的文檔來進(jìn)行操作
http://reactnative.cn/?
首先我們不管我們會(huì)不會(huì)前端知識(shí),我們需要看到一個(gè)可以跑起來的程序,讓我們?cè)诶斫馑跋纫姷剿?!那么我們開始按照文檔來搭建RN的環(huán)境。
一.環(huán)境需求
1.OS X - 本向?qū)Ъ僭O(shè)您的操作系統(tǒng)是OS X,因?yàn)檫@是開發(fā)iOS應(yīng)用所必須的。
2.推薦使用Homebrew來安裝Watchman和Flow
3.安裝Node.js4.0或更高版本(譯注:如果你并不使用Node.js開發(fā)網(wǎng)站,只是用于React Native的開發(fā),那么請(qǐng)先安裝homebrew,然后直接使用brew install node安裝即可,不必按照下面的nvm的安裝步驟)
//如果只是想要ReactNative 不需要做(1)(2);
? ? ? ?(1)安裝nvm(安裝向?qū)г?a target="_blank" rel="nofollow">這里)。然后運(yùn)行nvm install node && nvm alias default node,這將會(huì)默認(rèn)安裝最新版本的Node.js并且設(shè)置好命令行的環(huán)境變量,這樣你可以輸入node命令來啟動(dòng)Node.js環(huán)境。nvm使你可以可以同時(shí)安裝多個(gè)版本的Node.js,并且在這些版本之間輕松切換。
? ? ? (2) 如果你從未接觸過npm,推薦閱讀npm的文檔
4.在命令行中輸入brew install watchman,我們推薦安裝watchman,否則你可能會(huì)遇到一個(gè)Node.js監(jiān)視文件系統(tǒng)的BUG。
5.如果你希望使用flow來為js代碼加上類型檢查,那么在命令行中輸入brew install flow來安裝flow。(譯注:新手可以跳過這一步)
我們推薦您定期運(yùn)行brew update && brew upgrade來保持上述幾個(gè)程序?yàn)樽钚掳姹尽?/p>
2.快速開始
//執(zhí)行時(shí)候記得去掉$
$ npm install -g react-native-cli
$ react-native init AwesomeProject
譯注:由于眾所周知的網(wǎng)絡(luò)原因,react-native命令行從npm官方源拖代碼時(shí)會(huì)遇上麻煩。請(qǐng)將npm倉(cāng)庫(kù)源替換為國(guó)內(nèi)鏡像:
npm configsetregistry https://registry.npm.taobao.org
npm configsetdisturl https://npm.taobao.org/dist
另,執(zhí)行init時(shí)切記不要在前面加上sudo(否則新項(xiàng)目的目錄所有者會(huì)變?yōu)閞oot而不是當(dāng)前用戶,導(dǎo)致一系列權(quán)限問題,請(qǐng)使用chown修復(fù))。
這個(gè)init真的要等很久,我換了姿勢(shì)也沒變快所以大家多等等吧。
init后面就是初始化的文件夾名稱 至于這個(gè)Awesome是有什么意義并沒明白,希望有人能指出.
然后你再你的目錄下就可以看到這個(gè)叫做AwesomeProject的文件夾了

我們打開這個(gè)文件夾可以看到
工程的結(jié)構(gòu)長(zhǎng)成這個(gè)樣子,這是啥子?我們先不去考慮,看能不能跑起來。

我們進(jìn)入ios文件夾中(喂iOS可好?)

依然是熟悉的它們,習(xí)慣性地點(diǎn)開。

我們進(jìn)入AppDelegate.m去看NR做了什么?
我們看到在完成加載的方法中RN這樣達(dá)到了顯示的效果。
NSURL*jsCodeLocation;
/**
* Loading JavaScript code - uncomment the one you want.
*
* OPTION 1
* Load from development server. Start the server from the repository root:
*
* $ npm start
*
* To run on device, change `localhost` to the IP address of your computer
* (you can get this by typing `ifconfig` into the terminal and selecting the
* `inet` value under `en0:`) and make sure your computer and iOS device are
* on the same Wi-Fi network.
*/
jsCodeLocation = [NSURLURLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
/**
* OPTION 2
* Load from pre-bundled file on disk. The static bundle is automatically
* generated by "Bundle React Native code and images" build step.
*/
//jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
RCTRootView*rootView = [[RCTRootViewalloc]initWithBundleURL:jsCodeLocation
moduleName:@"AwesomeProject"
initialProperties:nil
launchOptions:launchOptions];
self.window= [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
UIViewController*rootViewController = [UIViewControllernew];
rootViewController.view= rootView;
self.window.rootViewController= rootViewController;
[self.windowmakeKeyAndVisible];
好我們Run一下程序。(我第一次運(yùn)行的時(shí)候出現(xiàn)提示watchman的error,隨手重新運(yùn)行了一下就好了沒記錄到錯(cuò)誤原因)

這個(gè)操作會(huì)同時(shí)打開一個(gè)用于實(shí)現(xiàn)動(dòng)態(tài)代碼加載的Node服務(wù)(React Packager)。所以每當(dāng)你修改代碼,你只需要在模擬器中按下?+R,而無需重新在XCode中編譯。

完成“Hello World”的程序運(yùn)行,見到RN世界的world,讓我們嘗試更改內(nèi)容,再次跑一下。

(這里有朋友推薦IDE使用Sublime來編輯代碼,需要的朋友可以去下載下free)

更改其中的文本內(nèi)容為“從零開始學(xué)習(xí)ReactNative!”
在模擬器界面直接Command + R

按下Cmd+D后出現(xiàn)調(diào)試菜單,我們?cè)谝院髸?huì)進(jìn)行了解。

完成Hello World 任務(wù)。我們開始進(jìn)入下一階段的探索。