【Electron学习笔记(四)】进程通信(IPC)
进程通信(IPC)
- 进程通信(IPC)
- 前言
- 正文
- 1、渲染进程→主进程(单向)
- 2、渲染进程⇌主进程(双向)
- 3、主进程→渲染进程
进程通信(IPC)
前言
在Electron框架中,进程间通信(IPC)是构建功能丰富的桌面应用程序的关键。本文将深入探讨Electron中的IPC机制,主要包括三个方面:渲染进程到主进程的单向通信、渲染进程与主进程之间的双向通信,以及主进程到渲染进程的单向通信。通过ipcMain和ipcRenderer模块,Electron实现了不同进程间的消息传递,从而确保了应用程序的高效运行和功能的丰富性。
笔记源于:禹神:一小时快速上手Electron,前端Electron开发教程
正文
1、渲染进程→主进程(单向)
- 概述:在渲染器进程中
ipcRenderer.send
发送消息,在主进程中使用ipcMain.on
接收消息 - 常用于:在 Web 中调用主进程的 API,例如下面这个需求:
需求:点击按键后,在用户的 D 盘创建一个 hello.txt 的文件,文件内容来自于用户输入 - 实现步骤:
-
index.html 页面中添加相关元素
-
render.js 中添加对应脚本
-
preload.js 中使用
ipcRenderer.send('信道','参数')
发送信息,与主进程通信 -
main.js主进程中接收信息,并定义函数执行操作
-
2、渲染进程⇌主进程(双向)
- 概述:渲染进程通过
ipcRenderer.invoke
发送消息 ,主进程使用ipcMain.handle
接收并处理消息
备注:ipcRenderer.invoke
的返回值是Promise
实例 - 常用于:从渲染器进程调用主进程方法并等待结果,例如下面这个需求:
需求:点击按键后,从 D 盘读取 hello.txt 的文件的内容,并将结果呈现在页面上 - 实现步骤:
-
index.html 页面中添加相关元素
-
render.js 中添加对应脚本
-
preload.js 中使用
ipcRenderer.invoke('信道','参数')
发送信息,与主进程通信 -
main.js 主进程中接收信息,并定义函数执行操作
-
render.js 中接收从 main.js->preload.js 得到的结果
-
3、主进程→渲染进程
- 概述:主进程使用
win.webContents.send
发送消息,在渲染进程中使用ipcRenderer.on
接收消息 - 常用于:从主进程主动发送消息到渲染进程,例如下面这个需求:
需求:应用加载6秒后,主动给渲染进程发送一个消息,内容是:hello - 实现步骤:
-
index.html 页面中添加相关元素, render.js 中添加对应脚本
-
preload.js 中使用
ipcRenderer.send('信道','参数')
接收消息,并配置回调函数
-
main.js主进程中在合适的时候,使用
win.webContents.send('信道','参数')
发送消息
-