场景

用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106413828

Electron怎样进行渲染进程调试和使用浏览器和VSCode进行调试:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106414541

在上面搭建好项目以及知道怎样进行调试后,那么Electron怎样实现主进程与渲染进程之间的通信。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

ipcMain

从主进程到呈现程序进程异步通信。

ipcMain模块是EventEmitter类的一个实例。在主进程中使用时,它处理从渲染器进程(网页)发送的异步和同步消息。从渲染器发送的消息将发送到此模块。

ipcRenderer

从呈现程序进程到主进程异步通信。

ipcRenderer模块是EventEmitter类的一个实例。它提供了一些方法,因此您可以将渲染进程(网页)中的同步和异步消息发送到主进程。您还可以收到主流程的回复。

渲染进程向主进程通信,主进程收到数据并回应,渲染进程接收回应

打开主进程main.js,首先引入ipcMain

const {app, BrowserWindow,ipcMain} = require('electron')

然后通过ipcMain.on注册事件

ipcMain.on("send-message-to-main",(event,args)=>{console.log("主进程接受到的数据是:",args);event.reply("send-message-to-renderer","这是来自主进程的问候");
})

第一个参数是事件名,自己定义。

然后通过args接收渲染进程传递的参数。

通过event.reply回应一个事件和数据给渲染进程。

然后打开渲染进程renderer.js,引入ipcRenderer

const {ipcRenderer} = require("electron");

然后在index.html中新建一个button并设置一个id

<div><button id="sendToMain">发送信息给主进程</button>
</div>

然后在renderer.js中通过id获取button并设置点击事件

var btnSendToMain=document.getElementById('sendToMain');
btnSendToMain.onclick = SendToMain;

在点击事件中通过ipcRender.sender向主进程发送消息

function SendToMain()
{ipcRenderer.send("send-message-to-main","这是来自渲染进程的数据:公众号:霸道的程序猿");
}

这里发送数据时的第一个参数要与上面主进程的on里面的第一个参数一样。

然后在renderer.js中通过ipcRenderer.on接收主进程的响应的事件和数据。

ipcRenderer.on("send-message-to-renderer",(event,args)=>{console.log("渲染进程收到的数据:",args);
})

其中第一个参数要与上面主进程reply里面的参数一样。

然后调试运行项目,打开调试页面。点击按钮

此时打查看主进程的控制台输出

主进程主动和渲染进程通信

打开主进程main.js,设置一个5秒的延迟,然后通过mainWindow去实现

  setTimeout(()=>{mainWindow.webContents.send("send-message-to-renderer","我是主进程,主动和你通信");},5000);

这里的第一个参数send-message-to-renderer要与渲染进程中

ipcRenderer.on("send-message-to-renderer",(event,args)=>{console.log("渲染进程收到的数据:",args);
})

所绑定的事件名称相对应。

调试运行项目打开调试页面,等待5秒。

Electron中通过ipcMain和ipcRender实现主进程和渲染进程之间的相互通信相关推荐

  1. Electron中主进程和渲染进程之间的通信

    文章目录 进程间通信 内容介绍 Demo:渲染进程到主进程的异步通信 其他 进程间通信 内容介绍 Electron 进程间通信 - 掘金 - weblnRun Electron开发实战 - P10进程 ...

  2. electron主进程和渲染进程的通讯

    渲染进程ipcRenderer.js const {ipcRenderer}=require('electron') window.onload=()=>{const sendMsgDom=do ...

  3. 大概是全网最详细的Electron ipc 讲解(一)——主进程与渲染进程的两情相悦

    希沃ENOW大前端 公司官网:CVTE(广州视源股份) 团队:CVTE旗下未来教育希沃软件平台中心enow团队 「本文作者:」 image.png 前言 你盼世界,我盼望你无 bug .Hello 大 ...

  4. electron 主进程与渲染进程通讯

    主进程和渲染器进程 Electron 有两种进程:主进程和渲染进程. 主进程通过创建 BrowserWindow 实例来创建 网页. 每一个 BrowserWindow 实例在其渲染过程中运行网页, ...

  5. Electron主进程和渲染进程之间通信

    Electron发送和接收数据用到的是 ipcMain 和 ipcRenderer 两个对象: ipcMain 是用在主进程中的: ipcRenderer 是用在渲染进程中的. 主进程用win.web ...

  6. electron 主进程和渲染进程的通信

    主进程给渲染进程发送消息,得用到ipcMain和ipcRenderer,流程和vue的父子通信很像 1,渲染进程给主进程通信(异步) html里面定义一个按钮,并加载渲染进程 <button i ...

  7. 第八节 Electron主进程和渲染进程之间的通信

    系列文章目录 第一节 electron 介绍 第二节 创建electron项目并启动 第三节 Electron运行流程 . 主进程渲染进程并使用nodejs 第四节 Electron 调用H5事件结合 ...

  8. Electron 主进程和渲染进程互相通信

    对于 渲染进程 之间的通信,可见另一篇总结:Electron 渲染进程之间的通信_王俊的博客-CSDN博客_electron渲染进程之间通信 下面总结一下主进程和渲染进程之间的通信. 说明: 自主到从 ...

  9. Electron 主进程、渲染进程及进程间的通信

    简介 Electron是由GIthub开发,用HTML.CSS.JS来构建跨平台桌面应用程序的一个开源库.Electron将Chromium和Nodejs合并到同一个运行时环境中,并将其打包为Mac. ...

最新文章

  1. 用一行代码高效的求一个列表的平方和
  2. greta的问题及解决: LIBCMTD.lib(_wctype.obj) : error LNK2005: _iswspace already defined in xxx.obj...
  3. pytorch查看当前学习率
  4. STM32之外部中断例程
  5. 汉诺塔(三) 判断操作是否合法 + 栈(stack)数组
  6. SQL 行转列,列分行,行合并列(转)
  7. esp8266 eeprom_ESP8266_08基于flash的数据掉电保护
  8. 2018年股票操作策略记录(1)
  9. 一个统计文章字数的算法,求改进
  10. 【关于c/c++中开平方函数sqrt()的用法】
  11. 编译原理:代码生成(pcode),C语言实现
  12. 如何用十六进制换算十进制
  13. 电脑配件 - 机械键盘的由来, 与普通键盘的区别以及如何选购及使用维护 - 学习/实践
  14. Week Day总结
  15. CAD文件怎么转成低版本?教你两个小妙招
  16. cracked me.1. Acid burn
  17. 百度购YY:追风者能翻盘?
  18. xilinx基础篇Ⅰ(3)ISE14.7下载FPGA
  19. 用itchat导入微信好友信息并保存(详细)简单易懂
  20. 四分位数的位置计算原理?

热门文章

  1. Escape The Maze (hard version) 多源最短路,bfs(1900)
  2. c语言编程后总有一个错误,C语言编程,之后出现错误,请大神帮忙看下什么问题?...
  3. RocketMQ(二):参数配置大全
  4. Spring Cloud Gateway不能使用外置tomcat部署的问题
  5. springboot 访问html_Spring Boot中使用Spring Security进行安全控制
  6. mysql中括号_《MySQL数据库》SQL简介、语法格式
  7. 抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法 (native),是否可同时被 synchronized
  8. rocketmq发送第一条消息(三)
  9. 编程用的记事本软件_数控常用编程软件那么多,你用哪一种?
  10. 树结构之树和二叉树的概念以及如何用面向对象思想进行结构定义01