当前位置: 首页 > news >正文

electron进程间通信- 从渲染进程到主进程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、进程间通信(IPC)
  • 二、使用步骤
  • 三、使用流程
  • 四、总结
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

本文讲解了Electron中的IPC机制,即进程间通信,特别是单向通信过程,从渲染进程到主进程的通信方式。通过IPC,可以在渲染进程中发送消息到主进程,主进程接收后处理相应任务,如更新窗口标题。具体实现中,渲染进程使用IPC renderer的send方法发送消息,主进程通过IPC main的on方法监听并处理消息。视频演示了如何通过按钮点击事件更新窗口标题,展示了IPC在Electron应用中的实际应用。


提示:以下是本篇文章正文内容,下面案例可供参考

一、进程间通信(IPC)

  • 进程间通信(IPC)是Electron中构建功能丰富桌面应用程序的关键部分。
  • 主进程和渲染进程在Electron的进程模型中具有不同的职责,因此IPC是执行许多常见任务的唯一方法。
  • IPC的两个管道名称:ipcMain和ipcRenderer。

二、使用步骤

在Electron中,content.setTitle(title)是Electron的BrowserWindow API原生方法,用于设置窗口标题

在这里插入图片描述
自定义的setTitle是我们通过preload.js暴露给渲染进程的方法名

它们通过IPC通信关联起来:

  • 渲染进程调用window.electron.setTitle(title)

  • preload.js通过ipcRenderer.send(‘setTitle’, title)发送消息

  • 主进程通过ipcMain.on(‘setTitle’, …)监听并调用content.setTitle(title)

三、使用流程

为了更清楚地展示这个流程,我可以输出 main.js 中相关部分的代码:

从代码中可以看到完整的流程:

  1. 在preload.js中,我们定义了一个自定义方法setTitle:
contextBridge.exposeInMainWorld('electron', {setTitle: (title) => { ipcRenderer.send('setTitle', title) }
})
  1. 在 main.js 中,我们监听’setTitle’事件:
ipcMain.on('setTitle', (event,title) => {const content = BrowserWindow.fromWebContents(event.sender)content.setTitle(title)
})

这里的content.setTitle(title)调用的是Electron原生的BrowserWindow.setTitle()方法

四、总结

自定义的setTitle是我们自己定义的方法名,用于渲染进程调用;content.setTitle()是Electron原生的API方法,它们通过IPC通信的’setTitle’事件名称关联起来


总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了这种设计模式是Electron中常见的安全通信方式,通过preload脚本暴露有限的API给渲染进程。

http://www.dtcms.com/a/328877.html

相关文章:

  • Spring cloud集成ElastictJob分布式定时任务完整攻略(含snakeyaml报错处理方法)
  • 移动端网页调试实战,触摸事件穿透与点击冲突问题的定位与优化
  • C++中的`auto`与`std::any`:功能、区别与选择建议
  • CV 医学影像分类、分割、目标检测,之【肝脏分割】项目拆解
  • 数据挖掘常用公开数据集
  • [爬虫实战] 基于半自动化的cookie池更新逻辑讲解
  • 数据分析总结
  • MyBatis 中 XML 与 DAO 接口的位置关系及扫描机制详解
  • 把 Linux 装进“小盒子”——边缘计算场景下的 Linux 裁剪、启动与远程运维全景指南
  • 关于Google Pixel,或者安卓16,状态栏颜色无法修改的解决方案
  • 双屏加固笔记本电脑C156-2:坚固与高效的完美融合
  • FPGA+护理:跨学科发展的探索(四)
  • 在CentOS 7上配置Android USB网络共享方式的方法
  • MacOS字体看起来比在 Windows 上更好?
  • HTTPS与CA证书:安全通信全解析
  • CA+https+动态WEB页面部署
  • JavaWeb核心:HttpServletRequest与HttpServletResponse详解
  • Linux 服务部署:自签 CA 证书构建 HTTPS 及动态 Web 集成
  • OpenBMC中观察者模式架构与实现全解析
  • http与https协议区别;vue3本地连接https地址接口报500
  • 解惑rust中的 Send/Sync(译)
  • 什么是费曼学习法?
  • 机器学习-Cluster
  • Jenkins一直无法启动,怎么办?
  • C# winform 调用 OPC UA C# WinForm 的批量订阅方法
  • Java19 Integer 位操作精解:compress与expand《Hacker‘s Delight》(第二版,7.4节)
  • 向长波红外成像图注入非均匀噪声
  • 【嵌入式电机控制#31】FOC:霍尔安装误差的补偿
  • Unity:GUI笔记(二)——工具栏和选择网格、滚动列表和分组、窗口、自定义皮肤样式、自动布局
  • Linux系统有何特点?linux系统组成如何?