我知道 chromedevtool
可以用作开放的调试器前端,通过 websocket 从调试器主机接收调试信息并显示它们,例如源文件和控制台日志,只要主机支持,它还为单步任务提供流控制 GUI。
但根据ReactNative
的远程调试页面:
React Native JS 代码在此选项卡中作为 Web worker 运行。
看来chrome不仅是前端,还执行正在调试的代码? 所以我的问题是:
1.如何在Chrome中执行设备相关代码?
2.设备也会执行代码吗? 如果是,它和 Chrome 之间有什么关系? 如果没有,应用如何在设备中运行?
1.如何在Chrome中执行设备相关代码?
在Chrome调试模式下,JavaScript代码在Chrome本身(而不是设备上的JavaScriptCore)中运行,并通过WebSocket与本机代码进行通信。在这里,它将使用 V8 引擎。这使我们能够查看有关Chrome调试工具的大量信息,例如网络请求,控制台日志等。
来源: 反应原生变得容易
请注意,Chrome的V8 Javascript引擎并不是React Native可以使用的唯一引擎,您也可以在Safari中进行调试,代码将在Safari的JavascriptCore上运行。请参阅此处了解更多信息
2.设备也会执行代码吗? 如果是,它和 Chrome 之间有什么关系? 如果没有,应用如何在设备中运行?
不,JS代码只在一个地方执行,如果你正在调试,浏览器的javascript引擎,因此通过Websockets与设备通信,或者设备的JavascriptCore,如果在没有调试的情况下运行。