网站首页 > 技术文章 正文
技巧一:视图调试
背景
在之前只有一个BrowserWindow调试页面时,默认会在开发时打开该页面的开发调试工具(chrome dev tools)。
但在使用多视图布局框架后,一个BrowserWindow会存在多个BrowserWindow,且一个 BrowserWindow会有多个 BrowserView 加载各个 URL 页面的情况:
如果是和以前一样,在开发时都打开,那满界面都是 devTools,类似下图:
一是多的乱七八糟,二是一旦关错了,那就只能重新启动来进行调试了。
如果默认都关闭,靠开发修改代码的方式打开,找到代码开启位置也是十分麻烦的,特别对打包给测试的包,想要调问题也很难。
虽然我们也有 cmd + shift + i 来打开调试窗口,但它只针对当前焦点的窗口,而不能打开其中 BrowserView 的调试窗口。
解决方案
默认都不开启 dev tools。
开启调试方式:
先选中你要 Debug 的视图
快速点击三下键盘左侧的 control 按键
相关代码
export function startDevToolsIfNeed(webContents: WebContents) {
if (!app.isPackaged || ServiceManager.shared.backendEnvService.env !== 'prod') {
let clicks = 0;
let previousClickTime = 0;
webContents.addListener('before-input-event', (_event, input) => {
if (input.type === 'keyDown' && input.code === 'ControlLeft') {
const now = +new Date();
if (now - previousClickTime < 300) {
clicks++;
} else {
clicks = 1;
}
previousClickTime = now;
if (clicks >= 3) {
webContents.openDevTools({
mode: 'detach',
activate: true,
});
webContents.devToolsWebContents?.focus();
clicks = 0;
}
}
});
}
}
用法也很简单,把上面的方法注册给BrowserView容器或者BrowserWindow窗口即可。
技巧二:主进程调试
官方其实有详细的说明: 调试主进程 | Electron
这里简单讲一下实现方式
步骤
1. 配置 inspect 端口打开
在 scripts/package.json 中,配置
electron --inspect=5858 .
运行 yarn start
2. 配置 chrome ,让其可以读取到 inspect 端口
a. 打开 chrome 浏览器
b. 输入chrome://inspect
c. 配置端口,增加 localhost:5858
d. 点击选择下方node进程进行调试,可增加断点,和 Web 一样调试。
技巧三:进程分析
背景
用了多视图方案后,尤其要关注进程和内存问题,这一点可能是很多前端同学所缺失的。因为一不留神,可能就把BrowserView容器持有了,进程销毁不掉,导致内存越用越多。
当然也不是嘲讽前端同学,笔者刚开始做 Electron 开发多容器时,也遇到很多进程没有释放的场景。
解决进程没有释放的前提是,先要能发现到进程没有释放的问题。
分析方式
Windows:任务管理器。
Mac:活动监视器。
以 Mac 为例:
Debug 模式下,查询进程名称为:Electron 的进程。
打包后,进程查询为你当前应用的名称。
这里可以看到多个进程,简单分析一下:
窗口占用每个窗口会占用一个处理进程(Helper)和一个渲染进程(Renderer)。
容器占用每个容器只会占用一个渲染进程(Renderer)。
感谢阅读,如果对你有用请点个赞 ??
原文链接:https://juejin.cn/post/7301242204995616819
猜你喜欢
- 2024-11-19 记某次常规js前端逆向
- 2024-11-19 前端代码安全与混淆
- 2024-11-19 前端抓包神器--whistle
- 2024-11-19 使用chrome调试工具解决问题(六)
- 2024-11-19 使用chrome调试工具解决问题(七)
- 2024-11-19 使用chrome调试工具解决问题(五)
- 2024-11-19 使用chrome调试工具解决问题(四)
- 2024-11-19 使用chrome调试工具解决问题(三)
- 2024-11-19 楼宇自控系统设备的安装与调试
- 2024-11-19 使用chrome调试工具解决问题(一)
你 发表评论:
欢迎- 06-24发现一款开源宝藏级工作流低代码快速开发平台
- 06-24程序员危险了,这是一个 无代码平台+AI+code做项目的案例
- 06-24一款全新的工作流,低代码快速开发平台
- 06-24如何用好AI,改造自己的设计工作流?
- 06-24濮阳网站开发(濮阳网站建设)
- 06-24AI 如何重塑前端开发,我们该如何适应
- 06-24应届生靠这个Java简历模板拿下了5个offer
- 06-24服务端性能测试实战3-性能测试脚本开发
- 566℃Oracle分析函数之Lag和Lead()使用
- 564℃几个Oracle空值处理函数 oracle处理null值的函数
- 549℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 545℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 543℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 536℃【数据统计分析】详解Oracle分组函数之CUBE
- 526℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 518℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)