В этой документации Electron page они рекомендуют, чтобы перезапустить приложение, необходимо выполнить app.quit
или app.exit
после вызова app.relaunch
:
Обратите внимание, что этот метод не завершает работу приложения, когда выполняется, необходимо вызвать app.quit или app.exit после вызова app.relaunch, чтобы перезапустить приложение.
Однако после экспериментов я обнаружил, что порядок на самом деле не имеет значения. (см. Мой пример ниже.)
Я знаю, что app.quit
и app.exit
не совсем одно и то же. Первый может быть прерван и вызовет некоторые события, в то время как последний вынудит приложение выйти без каких-либо событий или не позволит приложению отменить действие.
Вопрос : если предположить, что принудительно завершать работу приложения всегда нормально и что у нас нет задач для выполнения до выхода из приложения, есть:
- Причина предпочитать
app.quit
или app.exit
?
- Причина, по которой нужно запускать
app.quit
или app.exit
после app.relaunch
?
Вот очень простое приложение Electron:
package.json
{
"name": "burrito",
"version": "1.0.0",
"main": "main.js",
"scripts": {
"start": "electron ."
},
"devDependencies": {
"electron": "^4"
}
}
main.js
const {app, BrowserWindow, Menu} = require('electron');
let mainWindow;
app.on('ready', () => {
Menu.setApplicationMenu(
Menu.buildFromTemplate([
{role: 'appMenu', submenu: [
{label: 'relaunch(); exit()', click() {
app.relaunch();
app.exit();
}},
{label: 'relaunch(); quit()', click() {
app.relaunch();
app.quit();
}},
{type: 'separator'},
{label: 'exit(); relaunch()', click() {
app.exit();
app.relaunch();
}},
{label: 'quit(); relaunch()', click() {
app.quit();
app.relaunch();
}}
]}
])
);
mainWindow = new BrowserWindow({width: 640, height: 480});
mainWindow.loadFile('index.html');
});
Создание следующего меню приложения:
![enter image description here](https://i.stack.imgur.com/ogBqo.png)
Щелчок по любому из пунктов меню даст тот же результат: приложение закроется, а затем перезапустится.