在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在哪儿。markdown
固然,前面有提到app的链接服务器环境切换的问题,这个实际上还得依赖于app的Http请求封装的实现,当前调试工具只提供一个服务器环境展现与选择功能,如图所示:app
实现代码: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项目开发速度,你们有兴趣能够了解下: