Я планирую создать программное обеспечение с electron
, которое должно иметь много разных окон.Я уже прочитал книгу и изучил документацию, чтобы ознакомиться с электроном ipc module
и с тем, как он работает.
Эта концепция работает для меня, с управляемым количеством окон, но даже с большим количеством окон мое приложение получает еще большеэто сбивает с толку.
Я также новичок в javascript и Prototype-based object-oriented programming
Я пытаюсь представить, как я могу создать большое программное обеспечение без потери обзора main.js.
Проблема заключается в том, что main.js нужны специальные методы ipc для каждого окна.Я думаю о решении, в котором я могу хранить методы ipc в других файлах javascript с соответствующими именами.
Теперь мне нужно сделать в main.js, например:
ipcMain.on('window1-call1' .. {
//do stuff
}
ipcMain.on('window1-call2' .. {
//do stuff
}
ipcMain.on('window2-call1' .. {
//do stuff
}
and so on .....
Вотодин пример из моих main.js
, preload.js
и renderer.js
, чтобы показать, как я создаю простой пример IPC:
//main.js
ipc.on('open-directory-dialog', function (event) {
dialog.showOpenDialog(mainWindow, {
title: 'Select a image...',
properties: ['openFile'],
defaultPath: '/home',
buttonLabel: "Select...",
filters: [
{ name: 'Images', extensions: ['jpg', 'png', 'gif'] }
]
}, function (files) {
if (files) event.sender.send('selectedItem', files)
})
})
//preload.js
window.ipcFiledialog = function (channel) {
ipcRenderer.send('open-directory-dialog')
}
//callback
ipcRenderer.on('selectedItem', function (event, path) {
setSelectedItem(path)
})
//renderer.js
selectDirBtn.addEventListener('click', function (event) {
window.ipcFiledialog('open-directory-dialog')
})
function setSelectedItem (files) {
document.getElementById('selectedItem').innerHTML = files
}
При таком подходе мне нужно создать каждое окнов main.js (это увеличит main.js) и убедитесь, что я вызываю определенный метод ipc для правого окна.Метод обратного вызова должен также вызывать определенный метод для каждого окна.
Поэтому мне потребуется много методов, и эта конструкция не выглядит очень гибкой.
Есть ли лучшая практика дляпомешать main.js вырасти в «бесконечность» и получить более гибкие методы ipc?