如何在主/渲染进程之间共享数据

时间:2019-11-11 02:55:59

标签: electron

我是一个完整的电子初学者。假设您正在创建一个类似于记事本的简单应用,并希望通过单击应用的[文件>保存]菜单将您键入的内容保存在浏览器窗口的文本区域中。

菜单处理程序应在Main进程中实现,并且textarea显然在Renderer进程中。我不知道如何从Main进程访问文本区域中的内容。

1 个答案:

答案 0 :(得分:1)

在电子应用中,主进程和渲染器进程之间的通信是通过ipc执行的。电子有ipcMainipcRenderer模块,分别在Main和Renderer进程中使用。

对于您拥有的任务,只要用户单击文件>保存,就可以将消息发送到渲染器进程,这将触发将文本区域保存到文件。一种实现可能是这样的:

// main process
const { app } = require('electron')

// reference to the browser window
let mainWindow
app.on('ready', () => {
  // here create your browser window and assign it to mainWindow
  mainWindow = createMainWindow()
})

// clicking File > Save menu triggers following function
const saveClicked = () => {
  // Check mainWindow exists
  if (mainWindow != null) {
    mainWindow.webContents.send('clicked::file:save')
  }
}


// renderer process (preload.js)
const { ipcRenderer } = require('electron')

// Now you need to listen for the event you send from the main process
ipcRenderer.on('clicked::file:save', () => {
  // IMPLEMENT YOUR LOGIC HERE
})