React Native世界的"Hello World"

參考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è)項(xiàng)目文件夾


我們打開這個(gè)文件夾可以看到

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


RN文件目錄


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


依然是熟悉的它們

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



大概看一眼目錄結(jié)構(gòu)

我們進(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è)ReactPackager

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


模擬器中出現(xiàn)WelcomeToReactNative字樣

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


打開index.ios.js文件進(jìn)行JS代碼的編輯

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


我們看到React.js的代碼

更改其中的文本內(nèi)容為“從零開始學(xué)習(xí)ReactNative!”

在模擬器界面直接Command + R


完成更改

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


按下Cmd+D后出現(xiàn)調(diào)試菜單

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

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

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

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