一直對 RN 充滿了好奇蹬癌,前段時間學(xué)習(xí)并實際使用 RN 來開發(fā)了一個簡單的應(yīng)用权她。第一步從環(huán)境搭建開始。
環(huán)境搭建
分別需要安裝Node逝薪,Watchman隅要,Yarn 和 RN 命令行工具,推薦把 react-devtools 的 debug 工具也一并安裝了
$ brew install node
$ brew install watchman
$ brew install yarn
$ npm install -g react-native-cli
$ npm install -g react-devtools // debug工具翼闽,可選
創(chuàng)建應(yīng)用
只要運行下面的命令就可以創(chuàng)建一個名為 AwesomeProject 的 RN 項目
react-native init AwesomeProject
也可以指定使用 RN 版本號拾徙,
react-native init AwesomeProject --version 0.47.0
該命令會創(chuàng)建一個 package.json 的文件,就是 npm 管理依賴的文件感局。這個文件中需要特別注意,在 dependencies 中申明的 react 和 RN 的版本一定要配對暂衡。有一次生成后的項目運行總是報錯询微,百思不得其解,最后才發(fā)現(xiàn)是版本不匹配造成的狂巢。只能默默修改版本號撑毛,然后運行 npm install 才得以解決
{
"name": "AwesomeProejct",
"version": "1.0.0"
"private": true,
"scripts": {
"start": "node node_module/react-native/local-cli/cli.js start"
},
"dependencies": {
// "react": "^15.6.1", // was installed by npm but not matched
"react": "^16.0.0-alpha.12", // correct dependency version for react
"react-native": "^0.47.0"
}
}
除了依賴管理文件以外,還有 ios 和 android 兩個目錄用來存放原生代碼唧领,以及一些初始化的 JavaScript 文件模板藻雌,以后會用到,就不一一列舉了斩个。
初次運行
初次運行是用來檢查環(huán)境是否正確的簡單的反饋胯杭,根據(jù)平臺運行下列命令
$ react-native run-ios
or
$ react-native run-android
Android 需要事先啟動模擬器或者連接真機(jī),iOS 會自動啟動模擬器受啥。如果看到下面這個界面做个,恭喜你已經(jīng)完成了環(huán)境的搭建鸽心,就可以開始應(yīng)用層的開發(fā)了。
啟動過程
到此結(jié)束也是可以的居暖,但是還有一個問題需要解釋一下顽频,以便之后能夠快速進(jìn)入 RN 應(yīng)用開發(fā)。如上節(jié)提到的啟動命令太闺,可以分解成兩步糯景。
步驟1. 啟動服務(wù)器
一個步驟是啟動開發(fā)服務(wù)器,它是用來提供運行所需的 JavaScript 文件的省骂,當(dāng)然也可以用下面的命令單獨啟動
npm start
服務(wù)會占用本地的8081端口蟀淮,如果該端口被占用,需要依次運行下面兩個命令來結(jié)束占用端口的進(jìn)程
$ sudo lsof -i :8081
$ kill -9 <PID>
步驟2. 啟動移動端
另一個步驟就是編譯移動原生代碼并安裝運行冀宴,和平時開發(fā)原生移動應(yīng)用是一樣的灭贷。也可以到平臺各自的目錄下,ios或者android略贮,用 IDE 打開并編譯運行甚疟。
啟動完成并看到上面的截圖的界面,就不用反復(fù)編譯和啟動移動端程序逃延,每次代碼修改只需在模擬器中按提示刷新即可看到修改內(nèi)容览妖。因為 RN 的主要的邏輯代碼在服務(wù)器端的 JavaScript 中,就是說每次刷新都會拉取服務(wù)器上的最新代碼并重新渲染用戶界面揽祥。
當(dāng)然讽膏,目前提到的整個過程僅指在開發(fā)階段,生產(chǎn)環(huán)境中可以更自由拄丰, JavaScript 文件的存放可以在服務(wù)器和客戶端之間進(jìn)行選擇府树。
總結(jié)
這篇介紹了 React Native 的環(huán)境搭建過程,并分析了開發(fā)模式下的啟動過程料按。下一篇會介紹 React Native 的組件及相關(guān)概念奄侠。