fanchenio
V2EX  ›  Electron

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

  •  
  •   fanchenio · Sep 28, 2022 · 3502 views
    This topic created in 1352 days ago, the information mentioned may be changed or developed.
    最近用 electron 开发一个小软件,感觉在创建一个新窗口的时候,加载 dom 肉眼可见的慢,创建一个新窗口之后首先是空白,然后是加载 dom 这中间有一个加载的时间,会导致窗口白屏什么都没有,然后用了 did-finish-load 方法监听 dom 加载完后在显示窗口的话,就会感觉打开一个窗口很慢才会显示出来,我是不是需要像 VS Code 一样,不论打开什么窗口,都是在当前的页面里,用 html+css 的方式来创建一个窗口,而不是用 electron 的方式打开一个窗口并加载 dom 。
    7 replies    2023-04-19 14:30:28 +08:00
    gucheen
        1
    gucheen  
       Sep 28, 2022
    window 的新建速度确实有点差,现在有 BrowserView 了,如果是传统概念上的多标签,可以考虑用这个特性在同一个 window 中切换了来实现不同的标签,性能会好很多
    fanchenio
        2
    fanchenio  
    OP
       Sep 28, 2022
    @gucheen 谢谢大佬,我去看看。
    duan602728596
        3
    duan602728596  
       Sep 28, 2022
    关键词: 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  
       Oct 18, 2022
    一般都会用窗口池提前创建好窗口
    8bryo4p5qn758Dmv
        5
    8bryo4p5qn758Dmv  
       Oct 21, 2022
    “我是不是需要像 VS Code 一样,不论打开什么窗口,都是在当前的页面里,用 html+css 的方式来创建一个窗口”, 用 Modal 方式不行吗?
    xmsz
        6
    xmsz  
       Apr 19, 2023
    同个问题 打开还白屏一段时间 一点都不丝滑
    fanchenio
        7
    fanchenio  
    OP
       Apr 19, 2023
    @xmsz

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

    用这个,这个是窗口里面的页面加载完后会触发的事件,先隐藏窗口,触发这个事件以后,再 show 窗口就可以了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5559 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 06:59 · PVG 14:59 · LAX 23:59 · JFK 02:59
    ♥ Do have faith in what you're doing.