electron多窗口开发
时间: 2023-07-25 18:39:44 浏览: 133
Electron 支持多窗口开发,可以通过 `BrowserWindow` 类创建多个窗口。以下是一个简单的示例:
```javascript
// 主进程代码
const { app, BrowserWindow } = require('electron')
let mainWindow, secondWindow
function createMainWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
mainWindow.loadFile('index.html')
mainWindow.on('closed', () => {
mainWindow = null
})
}
function createSecondWindow() {
secondWindow = new BrowserWindow({
width: 400,
height: 300,
webPreferences: {
nodeIntegration: true
}
})
secondWindow.loadFile('second.html')
secondWindow.on('closed', () => {
secondWindow = null
})
}
app.on('ready', () => {
createMainWindow()
createSecondWindow()
})
```
在此示例中,我们创建了两个窗口,一个是主窗口,另一个是第二个窗口。`createMainWindow()` 和 `createSecondWindow()` 函数分别用于创建这两个窗口。在 `app` 实例的 `ready` 事件中,我们调用这两个函数来创建这两个窗口。
你可以在 `BrowserWindow` 的构造函数中指定窗口的大小和其他选项,比如窗口的 `webPreferences` 选项可以用于启用 Node.js 集成。
在渲染进程中,你可以使用 `remote` 模块来访问主进程中的窗口对象,从而实现多窗口之间的通信。
```javascript
// 渲染进程代码
const { remote } = require('electron')
const mainWindow = remote.BrowserWindow.getFocusedWindow()
const secondWindow = new remote.BrowserWindow({
width: 400,
height: 300,
webPreferences: {
nodeIntegration: true
}
})
secondWindow.loadFile('second.html')
document.getElementById('open-second-window').addEventListener('click', () => {
secondWindow.show()
})
document.getElementById('send-message-to-main-window').addEventListener('click', () => {
mainWindow.webContents.send('message', 'Hello from second window!')
})
remote.getCurrentWindow().on('closed', () => {
secondWindow.close()
})
```
在此示例中,我们通过 `remote` 模块获取了主窗口对象,并创建了一个新的窗口对象。我们可以通过 `show()` 方法显示第二个窗口,并通过 `webContents.send()` 方法向主窗口发送一条消息。同时,我们还监听了当前窗口的 `closed` 事件,以确保在主窗口关闭时关闭第二个窗口。
阅读全文