Introduction
Project entry file and lifecycle
Entry main
Launch 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();Lifecycle
The ./electron/preload/lifecycle module, loading order as follows:
javascript
class Lifecycle {
/**
* core app have been loaded
* Loading sequence:
* exception -> config -> log -> controller -> socket -> ready()
*/
async ready() {
logger.info('[lifecycle] ready');
}
/**
* electron app ready
* The following events are loaded:
* app.on('second-instance')
* app.whenReady().then() This event creates the mainWindow
* app.on('window-all-closed')
* app.on('before-quit')
* Then triggers:
* -> electronAppReady()
*/
async electronAppReady() {
logger.info('[lifecycle] electron-app-ready');
}
/**
* main window have been loaded
* After mainWindow is created, loads:
* windowReady()
*/
async windowReady() {
logger.info('[lifecycle] window-ready');
// Delayed loading, no white screen
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');
}
}