网站首页 > 技术文章 正文
技巧一:视图调试
背景
在之前只有一个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调试工具解决问题(一)
你 发表评论:
欢迎- 最近发表
-
- 前端流行框架Vue3教程:13. 组件传递数据_Props
- 前端必看!10 个 Vue3 救命技巧,解决你 90% 的开发难题?
- JAVA和JavaScript到底是什么关系?是亲戚吗?
- Java和js有什么区别?(java和javascript的区别和联系)
- 东方标准|Web和Java的区别,如何选择这两个专业
- 前端面试题-JS 中如何实现大对象深度对比
- 360前端一面~面试题解析(360前端笔试)
- 加班秃头别慌!1 道 Vue 面试题,快速解锁大厂 offer 通关密码
- 焦虑深夜刷题!5 道高频 React 面试题,吃透 offer 稳了
- 2025Web前端面试题大全(整理版)面试题附答案详解,最全面详细
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)