2019-03-07
本文的作者是 Piotr Drapich,文章源链接为 React Native — How to check what passes through your bridge?,我将其翻译成中文。
当编写 React Native APP 的时候,我经常发现自己需要调用原生能力。
现在,如果你像我的话,会先去 npm 上查查,看看有没有现成的库。
大多数情况,感谢社区,都能找到。
但是有的时候现有的库无法满足我的需要,因此我必须实现自己的 Native 模块。
在本文中,我们来看看 JavaScript 与 Native 之间的通信,通过 Bridge 的 debug 功能,将通信可视化是可能的。
在 Objective-C/Java 与 JavaScript 之间通信全靠 bridge。
每个数据要么从 JavaScript 发出,要么发送给 JavaScript。
大多数时候人们不关心 bridge 上的数据有多少、有多么频繁,但是他会导致 Bridge 过载。
当 bridge 过载的时候,你的应用会变卡,这个情况很常见。
从我个人角度,我总是希望发送的数据越少越好,以避免潜在的问题。
我也建议你这样做。否则……
不过不用担心,我教你如何检查 Bridge 上有多少数据被传递。
你所需要做的只是从 react-native/Libraries/BatchedBridge/MessageQueue.js
这个奇怪的路径导入 MessageQueue。之后再添加一个 spy() 函数:
import MessageQueue from 'react-native/Libraries/BatchedBridge/MessageQueue.js'; const spyFunction = (msg) => { console.log(msg); }; MessageQueue.spy(spyFunction);
当你把它添加进引用,你会在 Console 看到类似于这样的记录:
这是非常有用的,因为你可以监控 Bridge 有哪些数据被传递。
这样就可以判断某些数据是否有传递的必要。
其中:
我希望我已经帮你理解了如何调试你的 Native 模块的 Bridge,现在你自己也能做到了。
感谢阅读!
Dratwas.