【Electron学习笔记(四)】进程通信(IPC)

进程通信(IPC)

进程通信(IPC)

前言

在Electron框架中,进程间通信(IPC)是构建功能丰富的桌面应用程序的关键。本文将深入探讨Electron中的IPC机制,主要包括三个方面:渲染进程到主进程的单向通信、渲染进程与主进程之间的双向通信,以及主进程到渲染进程的单向通信。通过ipcMain和ipcRenderer模块,Electron实现了不同进程间的消息传递,从而确保了应用程序的高效运行和功能的丰富性。

笔记源于:禹神:一小时快速上手Electron,前端Electron开发教程

正文

1、渲染进程→主进程(单向)

  • 概述 :在渲染器进程ipcRenderer.send 发送消息,在主进程 中使用 ipcMain.on 接收消息
  • 常用于在 Web 中调用主进程的 API ,例如下面这个需求:
    需求:点击按键后,在用户的 D 盘创建一个 hello.txt 的文件,文件内容来自于用户输入
  • 实现步骤
    1. index.html 页面中添加相关元素

    2. render.js 中添加对应脚本

    3. preload.js 中使用 ipcRenderer.send('信道','参数') 发送信息,与主进程通信

    4. main.js主进程中接收信息,并定义函数执行操作

2、渲染进程⇌主进程(双向)

  • 概述渲染进程 通过 ipcRenderer.invoke 发送消息 ,主进程使用 ipcMain.handle 接收并处理消息
    备注: ipcRenderer.invoke 的返回值是 Promise 实例
  • 常用于从渲染器进程调用主进程方法并等待结果 ,例如下面这个需求:
    需求:点击按键后,从 D 盘读取 hello.txt 的文件的内容,并将结果呈现在页面上
  • 实现步骤
    1. index.html 页面中添加相关元素

    2. render.js 中添加对应脚本

    3. preload.js 中使用 ipcRenderer.invoke('信道','参数') 发送信息,与主进程通信

    4. main.js 主进程中接收信息,并定义函数执行操作

    5. render.js 中接收从 main.js ->preload.js 得到的结果

3、主进程→渲染进程

  • 概述主进程 使用 win.webContents.send 发送消息,在渲染进程 中使用 ipcRenderer.on 接收消息
  • 常用于从主进程主动发送消息到渲染进程 ,例如下面这个需求:
    需求:应用加载6秒后,主动给渲染进程发送一个消息,内容是:hello
  • 实现步骤
    1. index.html 页面中添加相关元素, render.js 中添加对应脚本

    2. preload.js 中使用 ipcRenderer.send('信道','参数') 接收消息,并配置回调函数

    3. main.js 主进程中在合适的时候,使用 win.webContents.send('信道','参数') 发送消息

相关推荐
m0_376137942 小时前
DevUI主题系统进阶:CSS-in-JS与暗黑模式无缝切换架构
javascript·css·架构·devui
晚霞的不甘2 小时前
实战深研:构建高可靠、低延迟的 Flutter + OpenHarmony 智慧教育互动平台(支持离线教学、多端协同与国产化适配)
前端·javascript·flutter
董世昌412 小时前
前端跨域问题:原理、8 种解决方案与实战避坑指南
开发语言·前端·javascript
晚霞的不甘2 小时前
实战精研:构建高安全、多模态的 Flutter + OpenHarmony 智慧医疗健康应用(符合 HIPAA 与医疗器械软件规范)
javascript·安全·flutter
雨季6663 小时前
Flutter 智慧金融零售服务平台:跨端协同升级金融便民体验
开发语言·javascript·ecmascript
500843 小时前
鸿蒙 Flutter 插件二次开发:基于开源插件(如 flutter_downloader)适配鸿蒙【实战指南】
flutter·华为·electron·开源·音视频·开源鸿蒙
克喵的水银蛇3 小时前
Flutter 通用网络图片封装实战:带占位 / 错误 / 缓存的 CachedImageWidget
开发语言·前端·javascript
500843 小时前
鸿蒙 Flutter 混合栈开发:与 React Native/ArkTS 页面无缝集成(2025 爆火方案)
flutter·华为·electron·wpf·开源鸿蒙
码上成长3 小时前
从零实现:react&Ts--批量导入 & Excel 模版下载功能
javascript·react.js·excel
2503_928411565 小时前
12.4 axios的二次封装-深拷贝
前端·javascript·vue.js