介绍
项目入口文件及生命周期
入口 main
启动 ElectronEgg
javascript
import { ElectronEgg } from 'ee-core';
import { Lifecycle } from './preload/lifecycle';
import { preload } from './preload';
// new app
const app = new ElectronEgg();
// register lifecycle
const life = new Lifecycle();
app.register("ready", life.ready);
app.register("electron-app-ready", life.electronAppReady);
app.register("window-ready", life.windowReady);
app.register("before-close", life.beforeClose);
// register preload
app.register("preload", preload);
// run
app.run();生命周期
./electron/preload/lifecycle 模块,加载顺序如下:
javascript
class Lifecycle {
/**
* core app have been loaded
* 加载
* exception -> config -> log -> controller -> socket -> ready()
*/
async ready() {
logger.info('[lifecycle] ready');
}
/**
* electron app ready
* 加载以下事件
* app.on('second-instance')
* app.whenReady().then() 该事件会创建 mainWindow
* app.on('window-all-closed')
* app.on('before-quit')
* 然后触发
* -> electronAppReady()
*/
async electronAppReady() {
logger.info('[lifecycle] electron-app-ready');
}
/**
* main window have been loaded
* mainWindow 被创建后,加载
* windowReady()
*/
async windowReady() {
logger.info('[lifecycle] window-ready');
// 延迟加载,无白屏
const { windowsOption } = getConfig();
if (windowsOption.show == false) {
const win = getMainWindow();
win.once('ready-to-show', () => {
win.show();
win.focus();
})
}
}
/**
* before app close
*/
async beforeClose() {
logger.info('[lifecycle] before-close');
}
}