Использование IP C в качестве посредника для использования другого пакета - PullRequest
1 голос
/ 15 апреля 2020

Следуя рекомендациям Я реализовал этот способ связи между средством визуализации и основным процессом. Теперь я sh хочу использовать пакет electron-settings, и мне интересно, есть ли какая-либо причина использовать этот способ связи для установки / получения настроек.

У меня есть два варианта:

  • Реализация слушателей в main. js (setSetting, getSetting, hasSetting), в рамках которого я звоню settings.set(), settings.get(), settings.has(), затем отправка результата обратно по IP C - по сути, упаковка функций и очистка ввода.
ipcMain.on("setSetting", (event, key, value) => {
    // Sanitizing input
    settings.set(key, value);
});

ipcMain.on("getSetting", (event, key) => {
    // Sanitizing input
    mainWindow.webContents.send("getSettingResult", settings.get(key));
});

ipcMain.on("hasSetting", (event, key) => {
    // Sanitizing input
    mainWindow.webContents.send("hasSettingResult", settings.has(key));
});
  • Импортируйте модуль electron-settings в preload.js и добавьте его в module.exports, чтобы я мог использовать его в процессе рендеринга. Я бы предположил, что это потенциальное нарушение?

Каков лучший способ go об этом? Это имеет значение? Если бы мне пришлось применить это к другим пакетам, должен ли я создавать «обертки» в форме слушателей для каждого возможного действия?

1 Ответ

0 голосов
/ 16 апреля 2020

Это то, с чем я пошел:

main. js

ipcMain.on("setSetting", (event, key, value) => {
    // Sanitizing input
    settings.set(key, value);
});

ipcMain.on("getSetting", (event, key) => {
    // Sanitizing input
    event.returnValue = settings.get(key);
});

ipcMain.on("hasSetting", (event, key) => {
    // Sanitizing input
    event.returnValue = settings.has(key);
});

renderer. js

let value = window.api.sendSync("getSetting", "testSetting");

window.api.send("setSetting", "testSetting", "test");

Это имеет недостаток: синхронный, но я не мог придумать другой способ убедиться, что результат переходит к правильному асинхронному слушателю. Даже с event.reply, если бы я отправлял два getSetting, каждый слушатель получил бы один и тот же ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...