V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fanchenio
V2EX  ›  Electron

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

  •  
  •   fanchenio · 2022-09-28 09:45:05 +08:00 · 2740 次点击
    这是一个创建于 821 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近用 electron 开发一个小软件,感觉在创建一个新窗口的时候,加载 dom 肉眼可见的慢,创建一个新窗口之后首先是空白,然后是加载 dom 这中间有一个加载的时间,会导致窗口白屏什么都没有,然后用了 did-finish-load 方法监听 dom 加载完后在显示窗口的话,就会感觉打开一个窗口很慢才会显示出来,我是不是需要像 VS Code 一样,不论打开什么窗口,都是在当前的页面里,用 html+css 的方式来创建一个窗口,而不是用 electron 的方式打开一个窗口并加载 dom 。
    7 条回复    2023-04-19 14:30:28 +08:00
    gucheen
        1
    gucheen  
       2022-09-28 09:49:19 +08:00
    window 的新建速度确实有点差,现在有 BrowserView 了,如果是传统概念上的多标签,可以考虑用这个特性在同一个 window 中切换了来实现不同的标签,性能会好很多
    fanchenio
        2
    fanchenio  
    OP
       2022-09-28 09:50:41 +08:00
    @gucheen 谢谢大佬,我去看看。
    duan602728596
        3
    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
        4
    sunwayTaihulight  
       2022-10-18 11:47:36 +08:00
    一般都会用窗口池提前创建好窗口
    8bryo4p5qn758Dmv
        5
    8bryo4p5qn758Dmv  
       2022-10-21 18:56:25 +08:00
    “我是不是需要像 VS Code 一样,不论打开什么窗口,都是在当前的页面里,用 html+css 的方式来创建一个窗口”, 用 Modal 方式不行吗?
    xmsz
        6
    xmsz  
       2023-04-19 14:18:35 +08:00
    同个问题 打开还白屏一段时间 一点都不丝滑
    fanchenio
        7
    fanchenio  
    OP
       2023-04-19 14:30:28 +08:00
    @xmsz

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

    用这个,这个是窗口里面的页面加载完后会触发的事件,先隐藏窗口,触发这个事件以后,再 show 窗口就可以了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4612 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:55 · PVG 17:55 · LAX 01:55 · JFK 04:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.