Ich habe eine Electron App mit NodeJS und Express. Ich habe den Hauptprozesscode in einer Datei (app.js) und die Routen in einer anderen Datei (router.js).Ist es eine schlechte Übung, app.quit() zu verwenden, um alle geöffneten Fenster in einer Elektronen-App zu schließen?
Die Hauptdatei erstellt das Hauptfenster:
mainWindow = new BrowserWindow({width: 1280, height: 800, icon: iconPath});
Die Routen-Datei erstellt ein neues Fenster, wenn Sie auf einem PDF-Dokument Link in der Anwendung klicken:
router.get('/docs/:module/:type/:file', function(req, res) {
openPDF(req.params.module,req.params.type,req.params.file);
res.end();
});
// open pdf's in a new window
let newWindow;
const openPDF = function(module,filetype,filename) {
let file = 'file:///' + __dirname + '/app/docs/' + module + '/' + filetype + '/' + filename;
let newWindow = new BrowserWindow({
width: 800,
height: 600,
icon: iconPath,
webPreferences: {
nodeIntegration: false
}
});
newWindow.setMenu(null);
// newWindow.webContents.openDevTools();
const param = qs.stringify({file: file});
newWindow.loadURL('file://' + __dirname + '/app/pdfjs/web/viewer.html?' + param);
newWindow.on('closed', function() {
newWindow = null;
});
}
Wenn schließe ich die Haupt Fenster Ich möchte auch andere offene Fenster schließen. Ich habe eine schwierige Zeit versucht, dies zu implementieren (beide Fenster sind im Hauptprozess, so kann ich IPC nicht nach meinem besten Wissen verwenden.) Dann erkannte ich, dass wenn ich app.quit() wenn das Hauptfenster aufrufen schließt es alle anderen Fenster schließt:
// Emitted when the window is closed.
mainWindow.on('closed', function() {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null
// quitting the app on main window close will close any other open windows
app.quit();
})
Meine Frage ist, ob dies eine schlechte Sache zu tun ist. Es beendet alle geöffneten Fenster ohne Benutzereingaben, aber es gibt keine ungespeicherte Arbeit, die verloren gehen könnte, da alle neuen Fenster PDF-Dateien wären, die nicht bearbeitet werden können.
Wenn die folgende Antwort Ihnen geholfen hat, stellen Sie bitte sicher, dass Sie sie upvoten/akzeptieren, um anderen zu helfen, die das gleiche Problem haben könnten! –