在 React Native 开发过程中,做为开发人员,我们经常做着费力不“讨好”的事情,这样占用我们不少时间:
定位 bug,通常流程是:
多环境打包
最后定位 bug 是后台数据问题:出现这种问题的根本原因是因为测试同学做的是“黑盒测试”,我们拿过来重现的步骤也是“黑盒验证”,这种测试方式不解决,上面那种尴尬的问题永远会存在。
怎么解决“黑盒测试”、“黑盒验证”问题呢?答案是:开放日志。 如果我们把 app 的数据流都展示在开发同学面前(至少把 http 请求数据流和基本日志输出开放),这样无论是测试同学还我们自己就能更容易的定位很大一部分 bug 的问题所在。
怎么“开放”这些日志?通过**react-native-debug-tool** 库,只需要几行代码就能实现一个开发调试工具,通过它,我们可以把我们想要“开放”的日志都以 UI 的形式随时随地展示出来。下面我们看看这个开发调试工具库能做什么:
先来看几张效果图:
可以看出普通日志,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 的 Http 请求封装的实现,当前调试工具只提供一个服务器环境展示与选择功能,如图所示:
实现代码:
DebugManager.initDeviceInfo(DeviceInfo)
.initServerUrlMap(serverUrlMap, RNStorage.baseUrl, (baseUrl) => {
RFHttpConfig().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 项目开发速度,大家有兴趣可以了解下:
如果有任何疑问,欢迎扫码加入 RN 技术 QQ 交流群
1
oxogenesis 2020-05-10 19:54:23 +08:00
nice
|