ライフサイクル イベント:
- reday: アプリの初期化が完了しました
- dom-ready: ウィンドウのテキストがロードされ、dom 上で操作できるようになります。
- Did-finish-load: ナビゲーションが完了したとき、タブ ローテーターの回転が停止したとき (dom-ready 後に発生)、たとえばタブをクリックした後、特定のオプションの dom がロードされた後にトリガーされます。
- window-all-closed: すべてのウィンドウが閉じられたときにトリガーされます
- before-quit: アプリケーションがウィンドウを閉じる前にトリガーされます。
- will-quit: ウィンドウが閉じられ、アプリケーションが終了するとトリガーされます。
- quit: すべてのウィンドウが閉じられるとトリガーされます。
- close: ウィンドウが閉じられるときにトリガーされ、この時点でウィンドウ アプリケーションを削除する必要があります (フォームを保存する参照オブジェクト (一部の変数の解放) を削除します)
ウィンドウ全閉イベントを監視し、何も操作しない場合、before-quit、will-quit、quitの3つのイベントは無効となります。
フックによってロードされる本の順序は、次のコードで示されています。
const { app, BrowserWindow } = require("electron");
// 创建窗口
function createWindow() {
app.whenReady().then(() => {
const mainWin = new BrowserWindow({
width: 600,
height: 400,
});
mainWin.loadFile("index.html");
mainWin.webContents.on("did-finish-load", () => {
console.log("333-did-finish-load");
});
mainWin.webContents.on("dom-ready", () => {
console.log("222-dom-ready");
});
mainWin.on("close", () => {
console.log("888-close");
mainWin = null;
});
});
}
app.on("window-all-closed", () => {
console.log("444-window-all-closed");
app.quit();
});
app.on("before-quit", () => {
console.log("555-before-quit");
});
app.on("will-quit", () => {
console.log("666-will-quit");
});
app.on("quit", () => {
console.log("777-quit");
});
app.on("ready", () => {
console.log("111-ready");
createWindow();
});
これら 3 つのフックは、フォームが閉じられていないときに初めて印刷されます。
ウィンドウが閉じられると、close と window-all-closed もトリガーされますが、他の 3 つのフックはトリガーされません。ここでは、window-all-closed イベントがリッスンされると、before-quit、will-quit されることが確認されています。 、終了、これら 3 つのイベントはトリガーされません、
このとき、ウィンドウ全閉イベントフックを積極的に閉じる必要があります。
この時点でフォームを閉じると、次のように出力されます。
window-all-closed がリッスンしていない場合、
フォームを閉じると、次のように出力されます。
テストにはウィンドウが 1 つだけあります。これがメイン ウィンドウなので、閉じるとすぐにトリガーされます。実際にはウィンドウが多数ある場合、メイン ウィンドウ 888 が最後に閉じられるため、ここでは 8 が最後になります