学习 Electron - 管理窗口生命周期

Electron 管理应用的窗口生命周期

应用窗口在不同操作系统中的行为也不同,通过监听 app 和 BrowserWindow 模组的事件,自行实现基础的应用窗口规范。

关闭所有窗口时退出

// 通常关闭了一个应用的所有窗口就会让它退出
// 要实现,则可以通过监听 window—all-closed 事件
// 并使用 app.quit() 方法退出
// 因为不适用 macOS 因此需要做额外判断
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit()
})

没有窗口则打开一个窗口

// 在 macOS 即使没有打开任何窗口,应用通常也会继续运行
// 在没有窗口可用时调用 app 会打开一个新窗口
// 可通过 监听 active 事件 进行操作
// 因为窗口无法再 ready 前创建,因此需要在初始化后仅监听 active 事件
app.whenReady().then(() => {
  createWindow()
  app.on('active', () => {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

平台

通过检查 Node 的 process.platform 可以针对特定平台执行特定代码,目前 Electron 仅支持 win32(Windows)、 linux(Linux)、drawin(macOS)。


学习 Electron - 管理窗口生命周期
http://localhost:8080/archives/ffb56fa7-5d60-4341-94b9-c62762d9463f
作者
inksha
发布于
2024年09月14日
许可协议