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 中相关部分的代码:
从代码中可以看到完整的流程:
- 在preload.js中,我们定义了一个自定义方法setTitle:
contextBridge.exposeInMainWorld('electron', {setTitle: (title) => { ipcRenderer.send('setTitle', title) }
})
- 在 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给渲染进程。