Heim >Web-Frontend >Front-End-Fragen und Antworten >Electron produziert QQ-Musik-Client-Hauptprozess und Rendering-Prozesskommunikation
Der Electron-Hauptprozess verwaltet alle Webseiten und die entsprechenden Rendering-Prozesse, und der Rendering-Prozess kann nur die entsprechenden Webseiten verwalten. Der Absturz eines Rendering-Prozesses hat also keine Auswirkungen auf andere Rendering-Prozesse.
Electron hat zwei Prozesse: den Hauptprozess und den Rendering-Prozess.
. Jede BrowserWindow-Instanz führt die Webseite während ihres Rendervorgangs aus. Wenn eine BrowserWindow-Instanz zerstört wird, wird auch der entsprechende Rendervorgang beendet.
Rendering-Prozess
1. Der Rendering-Prozess kann nur die entsprechende Webseite verwalten. Der Zusammenbruch eines Rendering-Prozesses hat keine Auswirkungen auf andere Rendering-Prozesse.
2. Der Rendering-Prozess kommuniziert über IPC mit dem Hauptprozess, um GUI-Vorgänge auf der Webseite auszuführen. Der Aufruf lokaler GUI-bezogener APIs direkt aus dem Renderer-Prozess ist aus Sicherheitsgründen und möglichen Ressourcenlecks eingeschränkt.
Die Kommunikation zwischen Prozessen kann über das IPC-Modul (Inter-Process Communication) erfolgen: ipcMain und ipcRenderer Um ein Fenster zu erstellen, rufen Sie bitte die BrowserWindow-Klasse auf, diese kann jedoch nur im Hauptprozess verwendet werden ( main.js ):
1. 首先由主进程向渲染进程发送消息,告诉它窗口的id(开启了多个渲染进程); 2. 在渲染进程接收winid,并在关闭窗口时发送给主进程 3. 在主进程中接收需要关闭的渲染进程 const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
Um den Hauptprozess aus dem Renderprozess aufzurufen, verwenden Sie bitte das IPC-Modul: Passen Sie beispielsweise die Fensterschließfunktion im Fensterbereinigungsmodus an win.once('ready-to-show', () => {
win.webContents.send('init_win_id', win.id);
win.show()
});
//渲染进程监听init_win_id事件(自定义),将winid赋给全局变量winid
let winid = '';
require('electron').ipcRenderer.on('init_win_id', (event, message) => {
winid = message;
})
// 关闭窗体
function closex(){
//渲染进程里把窗口id发给主进程
const { ipcRenderer } = require('electron')
ipcRenderer.send('close_window', winid);
}
// 主进程获取winid关闭窗体
ipcMain.on('close_window', (event, arg) => {
//app.quit()单个窗口可以直接app.quit()
//win.close();
// 1、接收渲染进程发来的窗口id
let winid = arg;
console.log(winid);
// 2、通过id找到对应的BrowserWindow对象(win、win22),调用这个对象的close()关闭对应的窗口
BrowserWindow.fromId(winid).close();
})
Das obige ist der detaillierte Inhalt vonElectron produziert QQ-Musik-Client-Hauptprozess und Rendering-Prozesskommunikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!