Skip to content

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');
  }
}