Я пытаюсь сделать экземпляр объекта BrowserWindow в приложении Electron доступным для меню приложения, чтобы команда меню могла использовать ссылку для открытия базы данных IndexedDB. Поскольку я создаю экземпляр mainWindow внутри немедленно вызываемой асинхронной c функции, неясно, как лучше сделать этот объект доступным в коде в требуемом файле.
index. js (основной процесс)
let mainWindow;
//other code here
(async () => {
await app.whenReady();
Menu.setApplicationMenu(menu);
mainWindow = await createMainWindow();
//make mainWindow available in required menu.js file
//so it can be referenced from menu command
//to access indexedDB database
})();
Я бы хотел, чтобы объект был доступен в меню. js, что требуется для индекса. js.
//menu setup
{
label: "Add Item to Database",
click() {
//undefined unless object can be imported
//dialog code for inputting data to be added
mainWindow.webContents.send("addItem", data);
}
},
Я мог бы хранить mainWindow в глобальном объекте но я пытаюсь избежать этого. Я также мог бы создать метод для объекта Menu и сохранить его там, так как он доступен в меню. js. Я не уверен, что это хорошая идея. И я полагаю, я мог бы просто добавить код меню. js в индекс. js, поскольку mainWindow находилось бы в области видимости и было бы назначено ко времени использования команды меню. Но я предполагаю, что есть лучший способ сделать это. Предложения