react-devtools 有chrome插件版,但在chrome 插件下的通信调试不够透明,且chrome 的插件特别是开发工具界面几乎无法调试。 看到了react-devtools 也提供electron 版本的调试工具。 正好学习一下。

文件结构:

react-devtools-core/standalone.js : 渲染进程js

react-devtools/app.js:主进程js

react-devtools-core/src/backend.js: 提供网页加载的client.js。(解析__REACT_DEVTOOLS_GLOBAL_HOOK__ 钩子变量, 发送消息给websocket 服务器, 这里需要手动引入,插件版通过injectscript 注入)

standalone.js  起一个 websocket 服务 和http 服务。

建立连接后, reload 渲染面板。

function reload() {
ReactDOM.unmountComponentAtNode(node);
node.innerHTML = '';
setTimeout(() => {
panel = ReactDOM.render(<Panel {...config} />, node);
}, 100);
}

  

知识点:

requestIdleCallback:利用帧空闲时间来触发执行的函数。而且是一个低优先级的函数,如果帧一直没有空闲时间,那就一直不执行,除非时间过了设定的Timeout。

requestIdleCallback(myNonEssentialWork, { timeout: 2000 });

let tasks = {
length: 4
} function myNonEssentialWork (deadline) {
// 当回调函数是由于超时才得以执行的话,deadline.didTimeout为true
// deadline.timeRemaining() 获取每一帧还剩余的时间
while ((deadline.timeRemaining() > 0 || deadline.didTimeout) && tasks.length > 0) {
console.log('done', tasks, deadline.timeRemaining())
tasks.length = tasks.length - 1
}
if (tasks.length > 0) {
requestIdleCallback(myNonEssentialWork);
}
}

  

this._bridge._listeners:

{
'root': [null],
'mount': [null],
'update': [null],
'updateProfileTimes': [null],
'unmount': [null],
'setInspectEnabled': [null],
'inspectedHooks': [null],
'select': [null],
'storeSnapshot': [null],
'clearSnapshots': [null],
'capabilities': []
}

   

websocket: 心跳机制

最新文章

  1. CSharpGL(12)用T4模板生成CSSL及其renderer代码
  2. .NET基础架构方法—DataTableToExcel通用方法
  3. a byte of python (摘01)
  4. HDU1853 &amp; 蜜汁建图+KM模板
  5. Hardwood Species(水)
  6. android测试本地服务调试流程
  7. mysql net连接读取结果为乱码 Incorrect string value
  8. 再回首,Java温故知新(八):Java基础之字符串
  9. libeXosip2(2) -- General purpose API.
  10. TRS_WCM(拓尔思信息技术有限公司)内容协作平台平台置标经验攻略
  11. SpringMVC @SessionAttributes注解
  12. python提取xml属性导入Mysql
  13. SharePoint 已在此服务器场中安装 ID 为 XXXXXXXXX 的功能。请使用强制属性显式地重新安装此功能。解决方法
  14. Java开发面试题汇总整理
  15. CentOS查找目录或文件
  16. redis和memcache的区别(总结)
  17. bzoj4933: 妙
  18. jQuery-对标签元素 文本操作-属性操作-文档的操作
  19. Python 矩阵与矩阵以及矩阵与向量的乘法
  20. java.lang.NoSuchFieldError: TRACE

热门文章

  1. 【原创】大数据基础之Oozie(1)简介、源代码解析
  2. sqlite 中的分页语句
  3. (转)Vue种key的作用
  4. js 读取文件
  5. php 文件系统函数及目录函数
  6. TCP常见的定时器及三次握手与四次挥手
  7. Azure Database for MySQL 报 Please specify SSL options and retry.
  8. Imcash科普:没有网络也可以转账比特币?你可能有些误解
  9. JVM内存简单总结
  10. django中models field详解