Electron 기본 프로세스는 모든 웹 페이지와 해당 렌더링 프로세스를 관리하며, 렌더링 프로세스는 해당 웹 페이지만 관리할 수 있습니다. 한 렌더링 프로세스의 충돌은 다른 렌더링 프로세스에 영향을 미치지 않습니다.
Electron에는 메인 프로세스와 렌더링 프로세스라는 두 가지 프로세스가 있습니다. ㅋㅋ . 각 BrowserWindow 인스턴스는 렌더링 프로세스 중에 웹 페이지를 실행합니다. BrowserWindow 인스턴스가 삭제되면 해당 렌더링 프로세스도 종료됩니다.
2. 기본 프로세스는 모든 웹 페이지와 해당 렌더링 프로세스를 관리합니다.染 렌더링 프로세스
1. 렌더링 프로세스는 해당 웹페이지만 관리할 수 있습니다. 렌더링 프로세스를 축소해도 다른 렌더링 프로세스에는 영향을 미치지 않습니다. 2. 렌더링 프로세스는 IPC를 통해 기본 프로세스와 통신하여 웹 페이지에서 GUI 작업을 수행합니다. 렌더러 프로세스에서 직접 로컬 GUI 관련 API를 호출하는 것은 보안 및 리소스 누수 가능성으로 인해 제한됩니다.
프로세스 간 통신은 IPC(프로세스 간 통신) 모듈인 ipcMain 및 ipcRenderer를 통해 수행할 수 있습니다.
창을 만들려면 BrowserWindow 클래스를 호출해야 하지만 기본 프로세스에서만 사용할 수 있습니다( main.js ):
const { BrowserWindow } = require('electron') const win = new BrowserWindow()
렌더링 프로세스에서 기본 프로세스를 호출하려면 IPC 모듈을 사용하세요. 예를 들어 창 정화 모드에서 창 닫기 기능을 사용자 정의하세요. 1. 首先由主进程向渲染进程发送消息,告诉它窗口的id(开启了多个渲染进程); 2. 在渲染进程接收winid,并在关闭窗口时发送给主进程 3. 在主进程中接收需要关闭的渲染进程 위 내용은 Electron은 QQ 음악 클라이언트-메인 프로세스 및 렌더링 프로세스 통신을 생산합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요! 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();
})