Electron 应用启动太慢,怎么优化主进程加载速度?
我用 Electron 做了个桌面应用,但每次启动都要等好几秒,感觉卡在主进程加载了。试过把 require 放到 ready 之后,还是没明显改善。
现在主进程里引入了不少模块,比如 const { app, BrowserWindow, ipcMain } = require('electron'),还有自己写的 config、db 连接之类的。是不是这些同步操作拖慢了启动?有没有办法延迟加载或者用异步方式提速?
另外看到有人提 preload 脚本会影响性能,但我还没动那块,主要是主进程一跑就慢。求真实可行的优化方案!
先说一个你可能忽略的点:require本身不慢,但模块里的同步操作才要命。你引进的config、db这些,模块一加载就执行了连接或读取,这就是拖慢的原因。
懒加载是核心思路,改一下你的代码结构:
db连接这种异步操作,别在app ready之前做,放到ready回调里:
再检查一下你的模块里有没有同步阻塞:
还有一点,如果你用了babel或webpack打包,检查一下是不是打包体积太大。可以用
electron-builder的分析功能看看,打包后main进程的代码量。最后一个小技巧,可以在主进程开头加个console.time标记,看看具体卡在哪一步:
基本上就这样,核心就是:同步操作异步化、模块懒加载、减少启动时的初始化工作。db连接、config读取这些大头改完,启动应该会快不少。