項目中遇到了要使 JS 與客戶端分離的問題膘魄,即由前端開發(fā)人員開發(fā)相應(yīng)的 JS 部分,客戶端人員(Android 和 Ios)開發(fā)對應(yīng)的 Native 部分。
不過幸運的是稿静,React Native 對這部分內(nèi)容已經(jīng)做了支持。主要的思想是辕狰,當(dāng)進入手機端的 RN 界面時改备,通過加載 JS 部分生成的 bundle,來達到 JS 測試開發(fā)的目的蔓倍。
在前端開發(fā)時悬钳,需要通過啟動 npm server,連接手機端的 server偶翅,來進行開發(fā)默勾。 下面對其中的過程做一筆記:
1.分離 JS 部分
前端開發(fā)所需要的東西只是 npm 的配置文件 package.json
及相應(yīng)的 index 文件(index.android.js 和 index.ios.js)。
當(dāng)然種類還是需要配置環(huán)境聚谁,根據(jù) package.json
文件母剥,執(zhí)行 npm install
即可,完成之后會生成相應(yīng)的 node_modules
目錄垦巴。另外媳搪,需要安裝的是 react-native-cli 的工具。執(zhí)行如下命令:
npm install -g react-native-cli
當(dāng)需要升級的時候骤宣,執(zhí)行如下:
npm update react-native-cli -g
之后秦爆,當(dāng)我們需要啟動一個 Server 的時候,在包含 index 文件和 node_modules 目錄下憔披,執(zhí)行如下命令:
npm start
或者如下:
react-native start
這樣等限,便可啟動一個用于提供 JS 的 Server.
2.對接調(diào)試
在啟動了 JS 的 server 之后爸吮,會在命令行中看到有關(guān)服務(wù)的地址和端口信息。手機端在對接 RN 的內(nèi)容并啟動之后望门,通過在 RN 界面的設(shè)置界面(使用菜單鍵或者搖一搖打開)連接 JS Server 的地址和端口即可形娇。另外可以啟用 Hot Loading 模式來實時加載 JS。
若是我們指定其他的端口筹误,可以使用如下命令:
react-native start --port 8088
3.指定端口
若是需要在真機上進行調(diào)試桐早,需要注意端口的啟用:
adb reverse tcp:8081 tcp:8081
如果需要改變端口,可參考鏈接 Android Tip: adb reverse | Grio Blog厨剪。
遇到的問題
1.64位手機不兼容的問題
這里可參照鏈接 Mixing 32- and 64-bit Dependencies in Android - Corbt blog 過濾掉 64 位的使用哄酝。
2.Could not get BatchedBridge
這個錯誤表示 RN 界面找不到需要加載的 js bundle,可以通過嘗試以下幾個途徑去解決:
- 進入 RN 的設(shè)置界面祷膳,在 Dev Setting 中 Debugging 中指定 Server 的地址和端口號陶衅。
- 另外,需要確保手機端和 Server 端保證在同一個 WIFI 之下直晨。