Как обмениваться данными между процессами Main / Renderer - PullRequest
0 голосов
/ 11 ноября 2019

Я начинающий Электрон. Допустим, вы создаете простое приложение, похожее на мемопад, и хотите сохранить то, что вы вводите, в текстовую область в окне браузера, щелкнув меню [Файл> Сохранить] приложения, которое должно быть очень распространенной функцией.

Обработчик меню должен быть реализован в процессе Main, а текстовая область явно находится в процессе Renderer. Я не могу понять, как получить доступ к тому, что находится в текстовой области из основного процесса.

1 Ответ

1 голос
/ 12 ноября 2019

В электронных приложениях связь между процессами Main и Renderer осуществляется через ipc. Electron имеет ipcMain и ipcRenderer модулей, используемых в процессах 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
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...