当前位置: 首页 > 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.xdnf.cn/news/1294723.html

相关文章:

  • [量化交易](1获取加密货币的交易数据)
  • 从0开始跟小甲鱼C语言视频使用linux一步步学习C语言(持续更新)8.13
  • C#自定义日期时间选择器
  • C++中的`auto`与`std::any`:功能、区别与选择建议
  • ResourcelessTransactionManager的作用
  • 嵌入式第二十七天(UI相关技术(framebuffer))
  • 深度学习·ExCEL
  • 基于js和html的点名应用
  • Jenkins一直无法启动,怎么办?
  • C# 反射入门:如何获取 Type 对象?
  • Android平台RTSP播放器选型指南:从开源方案到跨平台低延迟专业SDK
  • 浅层神经网络
  • Mysql——如何做到Redolog崩溃后恢复的
  • 完整源码+技术文档!基于Hadoop+Spark的鲍鱼生理特征大数据分析系统免费分享
  • Linux 软件编程:文件IO、目录IO、时间函数
  • VUE基础笔记
  • JS的学习5
  • 更改webpack默认配置项
  • 单片机启动流程详细介绍
  • 高防CDN和高防IP的各自优势
  • RabbitMQ:Windows版本安装部署
  • STM32H743开发周记问题汇总(串口通讯集中)
  • golang语言和JAVA对比
  • 一条n8n工作流
  • SVN提交服务器拒绝访问的问题
  • Linux 桌面到工作站的“性能炼金术”——开发者效率的 6 个隐形瓶颈与破解方案
  • 服务器硬件电路设计之 I2C 问答(五):I2C 总线数据传输方向如何确定、信号线上的串联电阻有什么作用?
  • 【MCP开发】Nodejs+Typescript+pnpm+Studio搭建Mcp服务
  • 从零到一:TCP 回声服务器与客户端的完整实现与原理详解
  • 基于UniApp的智能在线客服系统前端设计与实现