electron 是不是要避免打开新窗口?感觉加载很慢。

2022-09-28 09:45:05 +08:00
 fanchenio
最近用 electron 开发一个小软件,感觉在创建一个新窗口的时候,加载 dom 肉眼可见的慢,创建一个新窗口之后首先是空白,然后是加载 dom 这中间有一个加载的时间,会导致窗口白屏什么都没有,然后用了 did-finish-load 方法监听 dom 加载完后在显示窗口的话,就会感觉打开一个窗口很慢才会显示出来,我是不是需要像 VS Code 一样,不论打开什么窗口,都是在当前的页面里,用 html+css 的方式来创建一个窗口,而不是用 electron 的方式打开一个窗口并加载 dom 。
2407 次点击
所在节点    Electron
7 条回复
gucheen
2022-09-28 09:49:19 +08:00
window 的新建速度确实有点差,现在有 BrowserView 了,如果是传统概念上的多标签,可以考虑用这个特性在同一个 window 中切换了来实现不同的标签,性能会好很多
fanchenio
2022-09-28 09:50:41 +08:00
@gucheen 谢谢大佬,我去看看。
duan602728596
2022-09-28 11:27:10 +08:00
关键词: Electron 视觉闪烁,解决办法 一是等待 ready-to-show 时显示 BrowserWindow ( https://www.electronjs.org/zh/docs/latest/api/browser-window#%E4%BC%98%E9%9B%85%E5%9C%B0%E6%98%BE%E7%A4%BA%E7%AA%97%E5%8F%A3 ),二是 node 模块延迟加载,比如
```javascript
const fs = global.require('node:fs/promises');

function dosomething() {
fs.writeFile();
}
```
修改为
```javascript
let fs;

function dosomething() {
fs ??= global.require('node:fs/promises');
fs.writeFile();
}
```
sunwayTaihulight
2022-10-18 11:47:36 +08:00
一般都会用窗口池提前创建好窗口
whitecosm0s
2022-10-21 18:56:25 +08:00
“我是不是需要像 VS Code 一样,不论打开什么窗口,都是在当前的页面里,用 html+css 的方式来创建一个窗口”, 用 Modal 方式不行吗?
xmsz
2023-04-19 14:18:35 +08:00
同个问题 打开还白屏一段时间 一点都不丝滑
fanchenio
2023-04-19 14:30:28 +08:00
@xmsz

mainWindow.webContents.on("did-finish-load", function () {})

用这个,这个是窗口里面的页面加载完后会触发的事件,先隐藏窗口,触发这个事件以后,再 show 窗口就可以了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/883452

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX