Electron生命周期事件
生命周期事件
ready
app完成初始化操作会触发一次,用于加载窗口dom-ready
一个窗口中文本加载完成did-finish-load
导航完成时触发window-all-closed
所有窗口关闭后触发before-quit
关闭窗口前触发will-quit
窗口关闭并且应用退出时触发quit
当所有窗口被关闭时触发closed
当窗口关闭时触发,此时应删除窗口引用
演示代码
main.js
const { app, BrowserWindow } = require('electron')
//创建窗口
function createWindow() {
let mainWin = new BrowserWindow({
width: 800,
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---->window1 is closed')
mainWin = null //删除引用,释放内存,防止内存泄露
})
}
app.on('ready', () => {
console.log('111--->ready')
createWindow()
})
app.on('window-all-closed', () => {
console.log('444---->window-all-closed')
})
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')
})
运行然后关闭窗口,命令行中发现应用没有结束,按下ctrl+c
,其输出结果如下
111--->ready
222-------->dom-ready
333-------->did-finish-load
888---->window1 is closed
444---->window-all-closed
555---->before-quit
我们发现will-quit
与quit
的打印并没有出现,这是因为我们如果去监听window-all-closed
事件的话,则需要手动去调用退出方法,否则不会退出自然就没有will-quit
与quit
相应的内容输出了。
代码修改如下
app.on('window-all-closed', () => {
console.log('444---->window-all-closed')
app.quit();
})