在React Native開發過程當中,作爲開發人員,咱們常常作着費力不「討好」的事情,這樣佔用咱們很多時間:react
定位bug,一般流程是:git
最後定位bug是後臺數據問題:出現這種問題的根本緣由是由於測試同窗作的是「黑盒測試」,咱們拿過來重現的步驟也是「黑盒驗證」,這種測試方式不解決,上面那種尷尬的問題永遠會存在。github
怎麼解決「黑盒測試」、「黑盒驗證」問題呢?答案是:開放日誌。
若是咱們把app的數據流都展現在開發同窗面前(至少把http請求數據流和基本日誌輸出開放),這樣不管是測試同窗還咱們本身就能更容易的定位很大一部分bug的問題所在。web
怎麼「開放」這些日誌?經過react-native-debug-tool 庫,只須要幾行代碼就能實現一個開發調試工具,經過它,咱們能夠把咱們想要「開放」的日誌都以UI的形式隨時隨地展現出來。下面咱們看看這個開發調試工具庫能作什麼:npm
先來看幾張效果圖:react-native
能夠看出普通日誌,Http請求,webView的加載等都有詳細的記錄,由於數據一目瞭然,就不容易出現由於數據問題給app的bug的狀況了,那咱們集成這個開發工具會不會很複雜呢?服務器
import RootSibling from 'react-native-root-siblings'; DebugManager.showFloat(RootSibling)
fetch(url, params).then((response) => { DebugManager.appendHttpLogs({url, ...params}, response) })
<WebView source={{uri: url}} onNavigationStateChange={params => { DebugManagerDebugManager.appendWebViewLogs(params.url); }} />
static log(...args) { DebugManager.appendLogs(args.join('')) }
就這樣經過以上6步就能實現上面效果圖中的全部功能了,是否是很簡單,幾分鐘的時間就能搞定。之後,不管是測試同窗仍是開發人員均可以經過查看日誌更方便的定位問題的bug在哪兒。app
固然,前面有提到app的鏈接服務器環境切換的問題,這個實際上還得依賴於app的Http請求封裝的實現,當前調試工具只提供一個服務器環境展現與選擇功能,如圖所示:ide
實現代碼:工具
DebugManager.initDeviceInfo(DeviceInfo) .initServerUrlMap(serverUrlMap, RNStorage.baseUrl, (baseUrl) => { XHttpConfig().initBaseUrl(baseUrl); // 重置Http請求baseUrl 根據實際狀況調用 RNStorage.baseUrl = baseUrl; setTimeout(() => Alert.alert('環境切換', '服務器環境已經切換至' + baseUrl), 1000) });
注:當前設備信息的顯示依賴於 'react-native-device-info' 庫
需在調用頁面引入依賴:import DeviceInfo from 'react-native-device-info';
並把DeviceInfo傳入到DebugManager的初始化參數中。
至此調試開發工具的全部功能就徹底實現了,詳細用例你們能夠運行 示例 程序,一切就明瞭,歡迎朋友們 Star!
另外我還有一個開源項目,經過它能夠極大的提升RN項目開發速度,你們有興趣能夠了解下: