Heim  >  Artikel  >  Web-Frontend  >  Electron produziert QQ-Musik-Client-Hauptprozess und Rendering-Prozesskommunikation

Electron produziert QQ-Musik-Client-Hauptprozess und Rendering-Prozesskommunikation

灭绝师太
灭绝师太Original
2021-08-26 17:56:222293Durchsuche

           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 produziert QQ-Musik-Client-Hauptprozess und Rendering-Prozesskommunikation

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.

2. Der Hauptprozess verwaltet alle Webseiten und die entsprechenden Rendering-Prozesse.染

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 ):


    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

     1. 首先由主进程向渲染进程发送消息,告诉它窗口的id(开启了多个渲染进程);

  win.once('ready-to-show', () => {
    win.webContents.send('init_win_id', win.id);
    win.show()
  });

      2.  在渲染进程接收winid,并在关闭窗口时发送给主进程

    //渲染进程监听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);
	 
	}

    3. 在主进程中接收需要关闭的渲染进程

    // 主进程获取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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn