Jeżeli zastanawiasz się jak przesłać jakąś informację czy też obiekt z pliku widoku do pliku uruchomieniowego aplikacji, którym (w moim przypadku) jest plik index.js to czym prędzej zaprzestań swoich starań! Tak się bowiem składa, że bardzo właśnie na tej podstronie postaram się przybliżyć nieco tajemnicę takowego przesyłania danych.
Electron udostępnia odpowiedni mechanizm do realizacji przesyłania danych z widoku do pliku index.js. Do tego niecnego planu wykorzystam następujący kod umieszczony w pliku index-view.js i zaimportowany do pliku index.html:
Pozostało już tylko utworzyć plik messages.js z skryptem odbierającym komunikaty i wyświetlającym je w konsoli systemowej:
const { ipcMain } = require("electron");
class Messages {
static initMessages(mainWindow) {
/**
* na zdarzenie 'electron-log-message' wyświetlić w konsoli przesyłane dane i
* zwrócić wartość potwierdzającą jej odebranie
*/
ipcMain.on("electron-log-message", (e, message) => {
console.log(message);
e.returnValue = "sended";
});
}
}
module.exports.Messages = Messages;
Teraz już tylko pozostało w pliku index.js uruchomić metodę statyczną initMessage inicjalizującą odbieranie informacji pochodzących od widoku okna, której wywołanie powinno się znaleźć w funkcji createWindow:
function createWindow() {
win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
},
});
/**
* Tutaj wskazywany jest plik widoku okna
*/
win.loadFile("index.html");
Messages.initMessages(win);
/**
* Tworzenie menu
*/
const mainMenu = Menu.buildFromTemplate(mainMenuTemplate);
/**
* Dodanie menu do okna
*/
Menu.setApplicationMenu(mainMenu);
}
Po uruchomieniu tej jakże zaawansowanej aplikacji oczom twym powinien taki oto widok:
Wpisanie jakiegoś komunikatu i zatwierdzenie go powinno skutkować wyświetleniem w konsoli Visual Studio Code np takiego komunikatu: