Инструменты для упрощения 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
});