本文作者:IMWeb laynechen
未经同意,禁止转载
Electron 中的进程分类
在 Electron 中,存在两种进程:主进程和渲染进程。
主进程 (Main Process)
一个 Electron 应用只有 一个主进程
当我们执行 electron . 命令后, Electron 会运行当前目录(.)下的 package.json 文件中 main 字段指定的文件。而运行该文件的进程既是主进程。
运行在主进程中的脚本可以通过创建一个窗口,并传入 URL,让这个窗口加载一个网页来展示图形界面。
与创建 GUI 相关的接口只应该由主进程来调用。
渲染进程 (Renderer Process)
在Electron里的每个页面都有它自己的进程,叫作渲染进程。主进程通过实例化 BrowserWindow,每个 BrowserWindow 实例都在它自己的渲染进程内返回一个 web 页面。当 BrowserWindow 实例销毁时,相应的渲染进程也会终止。
渲染进程由主进程进行管理。每个渲染进程都是相互独立的,它们只关心自己所运行的 web 页面。
问题
这篇文章主要要解决的问题是:
Electron 与 View 层(网页),也就是主进程与渲染进程是如何进行通信的?
不同的通信是如何实现的?
先解决第一个问题。
Electron 与 View 层(网页)是如何进行通信的?
Electron 提供了两种通信方法:
1. 利用 ipcMain 和 ipcRenderer 模块
官方文档 上有使用这两个模块进行进程通信的例子:
// In main process.
const {ipcMain} = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {
console.log(arg) // prints "ping"
event.sender.send('asynchronous-reply', 'pong')
})
ipcMain.on('synchronous-message', (event, arg) => {
consol