温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Electron的原理是什么

发布时间:2021-06-23 17:31:00 来源:亿速云 阅读:691 作者:Leah 栏目:大数据

这篇文章将为大家详细讲解有关Electron的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

        在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对象传递给callbackevent主要有两个方法:同步回复消息和异步回复消息

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 .命令测试一下效果:

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的原理是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI