Инструменты для упрощения IPC в Electron

Есть ли у них какие-либо инструменты для упрощения IPC и выполнения маршалинга данных между одной веб-страницей и процессами node.js?

Я прочитал: http://tangiblejs.com/posts/nw-js-and-electron-compared-2016-edition

Какой обзор различий между nw.js и электроном. И то, и другое кажется почти одинаковым, но мне нравится минимизировать сложность, когда она не нужна, поэтому я склоняюсь к nw.js, чтобы избежать проблем IPC.

Но это может быть ошибкой, так как я вижу в 10 раз больше комментариев, касающихся электрона в этой группе, в отличие от NW.JS

(Моей IDE будет Visual Studio Code, который теперь имеет расширение для отладки NW.JS, но не для Electron).

1 ответ

Решение

Мы начали использовать NWJS по этой причине, а также потому, что он имел поддержку chrome.serial, В последнее время я преобразовал проект в электронный по нескольким причинам:

Вы правы, что в NWJS нет сложностей процессов main/render, но я нашел очень мало причин, чтобы иметь дело с IPC.

Многие из API доступны только в основном процессе, но доступны через удаленный API. Так, например, чтобы получить доступ к основному process.argv из процесса рендеринга я использую:

{process} = require('electron').remote
process.argv ...

В моем index.js мне пришлось сделать несколько вещей IPC, но у электрона есть библиотеки, чтобы упростить это:

// ensure we only have a single instance, but pass args to renderer to open any files passed by explorer
const shouldQuit = app.makeSingleInstance((argv, workingDir) => {
  win.webContents.send('open-instance', argv);
})

Тогда в моем коде рендерера где-то у меня есть следующее:

ipcRenderer.on('open-instance', (event, arg) => {
  this.restoreAndFocus();
  // TODO - handle another instance opening a file from explorer
});
Другие вопросы по тегам