扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章将为大家详细讲解有关Electron的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及成都纸箱等,在网站建设公司、营销型网站建设、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。
在Electron应用中,GUI组件仅在主进程可用,在辅助进程中不可用。那如果想要在辅助进程中试用GUI组件,势必需要和主进程进行通信。ipc模块就是用来实现主进程和辅助进程之间的通信。在主进程中使用ipcMain模块进行对辅助进程的通信进行控制和处理。而在辅助进程中,则使用ipcRenderer模块,来向主进程发送消息或者接受主进程的回应。接下来我们来讲讲这两个模块是如何进行通信的。
在主进程中使用ipcMain模块进行对辅助进程的通信进行控制和处理。ipcMain模块是EventEmitter的实例。ipcMain模块有四个监听方法:
ipcMain.on(channel, listener)
解析:监听事件channel,当新消息到达时,将执行监听方法listener(event, args)。
ipcMain.once(channel, listener)
解析:为事件channel添加一个只执行一次的监听方法listener。在第一次消息到大时会调用listener,执行完毕马上删除listener.
ipcMain.removeListenner(channel, listener)
解析:从特定的channel的监听事件中删除特定的listener监听者。
ipcMain.removeAllListeners([channel])
解析:本方法可接受传参channel,若传参channel,则删除特定channel的所有监听者。若未进行传参,则删除所有监听者。
我们需要将event对象传递给callback,event主要有两个方法:同步回复消息和异步回复消息
event.returnValue
解析:当主进程需要向辅助进程回复同步消息,则可以使用该方法。
event.sender.send('消息')
解析:当主进程需要向辅助进程回复异步消息,则可以使用本方法。
我们还是拿昨天的项目来继续用,我们来看看主进程和辅助进程之间如何进行通信的:
首先主进程我们说过了就是index.js文件,我们在里面使用ipcMain模块对消息进行处理:
const ipcMain = require('electron').ipcMain;
ipcMain.on('test-message', function (event, arg) {
event.sender.send('test-reply', '这是主进程');
});
ipcMain.on('test-message', function (event, arg) {
event.returnValue = '这是主进程';
});
辅助进程目前只有一个index.html页面,我们在里面使用ipcRenderer对消息进行处理
const ipcRenderer = require('electron').ipcRenderer;
console.log(ipcRenderer.sendSync('test-message', '这是辅助进程'));
ipcRenderer.on('test-reply', function(event, arg) {
console.log(arg);
});
ipcRenderer.send('test-message', '这是辅助进程');
我们使用electron .命令测试一下效果:
可以看到主进程成功进行通信了,那接下来我们来讲讲在辅助进程中ipcRenderer具体的使用方法吧。
辅助进程其实就相当于我们一个个的html文件,可以使用ipcRenderer来接受和发送消息以便与主进程进行交互。
ipcRenderer模块用来监听事件的有四个方法:
ipcRenderer.on(channel, listener)
ipcRenderer.once(channel, listener)
ipcRenderer.removeListenner(channel, listener)
ipcRenderer.removeAllListeners([channel])
这四个方法的含义和ipcMain一致,这里就不进行重复解释了。发送消息ipcRenderer一样有发送同步消息和发送异步消息两个方法:
ipcRenderer.send(channel, args)
解析:辅助进程使用该方法向主进程发送异步消息。主进程使用ipcMain模块对异步消息进行处理。
ipcRenderer.sendSync(channel, args)
解析:辅助进程使用该方法向主进程发送同步消息。主进程使用ipcMain模块对同步消息进行处理然后通过event.returnValue进行相应消息给辅助进程。在这里我的建议是尽量少用同步消息,因为发送同步消息会阻塞整个页面渲染进程,对于用户体验来说是非常糟糕的一件事情。
ipcRenderer其实还有一个方法用来发送消息:
ipcRenderer.sendToHost(channel, args)
关于Electron的原理是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流