理解Electron中的主进程和渲染进程

 

什么是主进程
  • electron项目启动的时候运行main.js的进程就是主进程
  • 一个项目有且只有一个主进程
  • 创建窗口等所有系统事件都要在主进程中进行
    简单的说就是我们的electron项目的主进程只有一个, 主进程的执行代码需要写到main.js中, 所有跟系统事件相关的代码统统都要写在这里
什么是渲染进程
  • 我们每创建一个web页面都会创建一个渲染进程
  • 每个web页面运行在它自己的渲染进程中
  • 每个渲染进程是独立的, 它只关心它所运行的页面
    简单理解就是一个web页面一个渲染进程
主进程和渲染进程的区别
  • 主进程通过BrowserWindow创建页面
  • 每个BrowserWindow实例都在自己的渲染进程中运行, 当BrowserWindow实例被销毁后, 相应的渲染进程也会被终止
主进程和渲染进程怎么通信

我们如何在一个页面打开另外一个页面?我们的思路应该是这样的

  1. 从我们第一个页面发出一个指令,也就是说从渲染进程中发出一个指令
  2. 发送指令到主进程,因为只有主进程才可以创建新的页面
    这个时候我们就需要解决主进程和渲染进程之间通信的问题,怎么通信呢?
    官方为我们提供类多种实现方式,我们常用的是使用ipcRenderer 和 ipcMain模块发送消息来解决通信问题
    ipcRenderer和ipcMain怎么发送消息?看下面示例代码
  • 主进程代码
const { ipcMain } = require('electron')
// 监听渲染进行发送的消息
ipcMain.on('renderer-msg', (event, arg) => {
  console.log(arg) // prints "帮我创建一个新的页面",  
  // 执行创建页面的操作
  event.reply('main-msg', '好的');  // 给渲染进程回复消息
})
  • 渲染进程代码
const { ipcRenderer } = require('electron');
ipcRenderer.on('main-msg', (event, arg) => {
  console.log(arg) // prints "好的"
})
ipcRenderer.send('renderer-msg', '帮我创建一个新的页面'
posted @ 2021-09-18 10:49  威武的大萝卜  阅读(810)  评论(0编辑  收藏  举报