一直對 RN 充滿了好奇,前段時(shí)間學(xué)習(xí)并實(shí)際使用 RN 來開發(fā)了一個(gè)簡單的應(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)用
只要運(yùn)行下面的命令就可以創(chuàng)建一個(gè)名為 AwesomeProject 的 RN 項(xiàng)目
react-native init AwesomeProject
也可以指定使用 RN 版本號,
react-native init AwesomeProject --version 0.47.0
該命令會創(chuàng)建一個(gè) package.json 的文件,就是 npm 管理依賴的文件。這個(gè)文件中需要特別注意,在 dependencies 中申明的 react 和 RN 的版本一定要配對。有一次生成后的項(xiàng)目運(yùn)行總是報(bào)錯,百思不得其解,最后才發(fā)現(xiàn)是版本不匹配造成的。只能默默修改版本號,然后運(yù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 兩個(gè)目錄用來存放原生代碼,以及一些初始化的 JavaScript 文件模板,以后會用到,就不一一列舉了。
初次運(yùn)行
初次運(yùn)行是用來檢查環(huán)境是否正確的簡單的反饋,根據(jù)平臺運(yùn)行下列命令
$ react-native run-ios or $ react-native run-android
Android 需要事先啟動模擬器或者連接真機(jī),iOS 會自動啟動模擬器。如果看到下面這個(gè)界面,恭喜你已經(jīng)完成了環(huán)境的搭建,就可以開始應(yīng)用層的開發(fā)了。
RN First Launch
啟動過程
到此結(jié)束也是可以的,但是還有一個(gè)問題需要解釋一下,以便之后能夠快速進(jìn)入 RN 應(yīng)用開發(fā)。如上節(jié)提到的啟動命令,可以分解成兩步。
步驟1. 啟動服務(wù)器
一個(gè)步驟是啟動開發(fā)服務(wù)器,它是用來提供運(yùn)行所需的 JavaScript 文件的,當(dāng)然也可以用下面的命令單獨(dú)啟動
npm start
服務(wù)會占用本地的8081端口,如果該端口被占用,需要依次運(yùn)行下面兩個(gè)命令來結(jié)束占用端口的進(jìn)程
$ sudo lsof -i :8081 $ kill -9 <PID>
步驟2. 啟動移動端
另一個(gè)步驟就是編譯移動原生代碼并安裝運(yùn)行,和平時(shí)開發(fā)原生移動應(yīng)用是一樣的。也可以到平臺各自的目錄下,ios或者android,用 IDE 打開并編譯運(yùn)行。
啟動完成并看到上面的截圖的界面,就不用反復(fù)編譯和啟動移動端程序,每次代碼修改只需在模擬器中按提示刷新即可看到修改內(nèi)容。因?yàn)?RN 的主要的邏輯代碼在服務(wù)器端的 JavaScript 中,就是說每次刷新都會拉取服務(wù)器上的最新代碼并重新渲染用戶界面。
當(dāng)然,目前提到的整個(gè)過程僅指在開發(fā)階段,生產(chǎn)環(huán)境中可以更自由, JavaScript 文件的存放可以在服務(wù)器和客戶端之間進(jìn)行選擇。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com