Electron入门之ipcMain,ipcRenderer
ipcMain
模块是类EventEmitter的实例.当在主进程中使用它的时候,它控制着由渲染进程(web page)发送过来的异步或同步消息.从渲染进程发送过来的消息将触发事件.
【发消息】
- 发送消息,事件名为
channel
.
- 回应同步消息, 你可以设置
event.returnValue
.
- 回应异步消息, 你可以使用
event.sender.send(...)
.
例子:
// 主进程中
const ipcMain = require('electron').ipcMain;
ipcMain.on('asynchronous-message', function(event, arg) {
console.log(arg); // prints "ping"
event.sender.send('asynchronous-reply', 'pong');
}); ipcMain.on('synchronous-message', function(event, arg) {
console.log(arg); // prints "ping"
event.returnValue = 'pong';
});
// 渲染进程中(web page).
const ipcRenderer = require('electron').ipcRenderer;
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')); // prints "pong" ipcRenderer.on('asynchronous-reply', function(event, arg) {
console.log(arg); // prints "pong"
});
ipcRenderer.send('asynchronous-message', 'ping');
从上面的代码中,我们可以看出,同步消息使用sendSync方法,在发出的瞬间即可接收到响应内容。而异步消息使用send方法,之后需要监听异步事件才能得到响应。
【监听消息】
ipcMain.on(channel, listener)
channel
Stringlistener
Function
监听 channel
, 当新消息到达,将通过 listener(event, args...)
调用 listener
.
ipcMain.once(channel, listener)
channel
Stringlistener
Function
为事件添加一个一次性用的listener
函数.这个 listener
只有在下次的消息到达 channel
时被请求调用,之后就被删除了.
ipcMain.removeListener(channel, listener)
channel
Stringlistener
Function
为特定的 channel
从监听队列中删除特定的 listener
监听者.
ipcMain.removeAllListeners([channel])
channel
String (可选)
删除所有监听者,或特指的 channel
的所有监听者.
【事件对象】
event.returnValue
将此设置为在一个同步消息中返回的值.
event.sender
返回发送消息的 webContents
,你可以调用 event.sender.send
来回复异步消息。
ipcRenderer
模块是一个EventEmitter类的实例. 它提供了有限的方法,你可以从渲染进程向主进程发送同步或异步消息. 也可以收到主进程的相应.
【消息监听】
ipcRenderer.on(channel, listener)
channel
Stringlistener
Function
监听 channel
, 当有新消息到达,使用 listener(event, args...)
调用 listener
.
ipcRenderer.once(channel, listener)
channel
Stringlistener
Function
为这个事件添加一个一次性 listener
函数.这个 listener
将在下一次有新消息被发送到 channel
的时候被请求调用,之后就被删除了.
ipcRenderer.removeListener(channel, listener)
channel
Stringlistener
Function
从指定的 channel
中的监听者数组删除指定的 listener
.
ipcRenderer.removeAllListeners([channel])
channel
String (optional)
删除所有的监听者,或者删除指定 channel
中的全部.
【发送消息】
ipcRenderer.send(channel[, arg1][, arg2][, ...])
channel
Stringarg
(可选)
通过 channel
向主进程发送异步消息,也可以发送任意参数.参数会被JSON序列化,之后就不会包含函数或原型链.
主进程通过使用 ipcMain
模块来监听 channel
,从而处理消息.通过 event.sender.send() 来响应.
ipcRenderer.sendSync(channel[, arg1][, arg2][, ...])
channel
Stringarg
(可选)
通过 channel
向主进程发送同步消息,也可以发送任意参数.参数会被JSON序列化,之后就不会包含函数或原型链.
主进程通过使用 ipcMain
模块来监听 channel
,从而处理消息, 通过 event.returnValue
来响应.
注意: 发送同步消息将会阻塞整个渲染进程,除非你知道你在做什么,否则就永远不要用它 .
ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])
channel
Stringarg
(可选)
类似 ipcRenderer.send
,但是它的事件将发往 host page 的 <webview>
元素,而不是主进程.
Electron入门之ipcMain,ipcRenderer的更多相关文章
- electron 入门小白贴
electron 入门小白贴 electron demo 跑起来! 毕设准备是做个 跨平台的做题的客户端,打算用 electron 来弄. 然而今天折腾了半天才终于吧demo给跑起来了.经历了许多的问 ...
- Electron 入门第一篇
官网:http://electronjs.org/docs/tutorial/application-architecture 转载:https://blog.csdn.net/qq_33323731 ...
- Electron入门Demo之桌面应用计算器笔记(二)
码文不易啊,转载请带上本文链接呀,感谢感谢 https://www.cnblogs.com/echoyya/p/14307996.html 在之前总结了一篇自学笔记,通过之前学习到的方法和知识,完成了 ...
- Electron入门应用打包exe(windows)
最近在学习nodejs,得知Electron是通过将Chromium和Node.js合并到同一个运行时环境中,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一门技术.对于之前一直从 ...
- electron入门教程
1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...
- 1、Electron入门HelloWorld案例
一.Electron是什么? 官网:https://electronjs.org/ Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. ...
- electron入门代码
Electron 提供了一个实时构建桌面应用的纯 JavaScript 环境.Electron 可以获取到你定义在 package.json 中 main 文件内容,然后执行它.通过这个文件(通常我们 ...
- electron入门心得
前言 前端开发桌面程序这个概念已经出现有一段时间了,这项技术也已经走向成熟,Github上nw和光electron的star就差不多有10w颗星了,github也衍生出了很多开源的桌面项目俨然成了一个 ...
- electron入门笔记(三)- 引入bootstrap
源码:https://github.com/sueRimn/electron-bootstrap 当引入jQuery和bootstrap文件时,会报错,原因是:electron 的 Renderer ...
随机推荐
- Linux下Solr单机版、集群版安装与配置
一.安装 1.需要的安装包有apache-tomcat-7.0.47.tar.gz.solr-4.10.3.tgz.tgz(jdk自行安装) 这里默认大家已经安装好jdk与tomcat,所以在这里不做 ...
- Django基本配置与URLconf
what's the Django python的框架主要有:Django.Flask.Tornado Django是一个开放源代码的Web应用框架,由Python写成.它的主要特点是大而全,我们需要 ...
- 漫画HDFS工作原理(转)
转自:http://blog.csdn.net/netcoder/article/details/7442779?locationNum=2 对漫画内容更好的解读,可参考: http://www.we ...
- 010 Editor - Binary Templates
010 Editor是一款非常强大的文本/十六进制编辑器,除了文本/十六进制编辑外,还包括文件解析.计算器.文件比较等功能,但它真正的强大之处还在于文件的解析功能.我们可以使用010Edito ...
- sublime开启vim模式
sublime自带vim模式Vintage,只是默认是ignore状态,因此如果按Esc键没有进入vim模式,只需要按ctrl+shift+P进入命令模式,键入Enable package,输入Vim ...
- 论文阅读(XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network)
XiangBai——[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...
- Analysis of FCN
全卷积网络 FCN 详解 背景 CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题.神经网络大神Jonathan Long发表了<Fully ...
- 给datagrid的日期格式化成年月日
$('#infos').datagrid({ title:'系统版本列表', iconCls:'icon-view', method:'POST', singleSelect:false, fit : ...
- linux PWM蜂鸣器移植以及驱动程序分析【转】
本文转载自:https://blog.csdn.net/lxllinux/article/details/80885331 一.关于PWM: PWM(Pulse Width Modula ...
- Qt Windows打开指定文件注意替换双斜杠为单斜杠
QProcess::startDetached(QString("explorer %1").arg(strFilePath)); 其中,在windows上使用时,strFileP ...