首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Electron入门教程3 ——进程通信

因为主进程和渲染进程在Electron进程模型中有不同职责,IPC是执行许多常见任务唯一方式,比如从UI调用本地API或从本地菜单触发web内容更改。下面就来详细介绍3种常见通信方式。...✧ 渲染进程向主进程单向通信 在Electron中,进程通过开发人员定义“通道”与ipcMain模块和ipcRenderer模块进行通信。...你通常使用这个模式从你web内容中调用一个主进程API。我们将通过创建一个简单应用程序来演示这种模式,该应用程序可以通过编程方式更改窗口标题。...在应用准备好之后,里面调用ipcMain.handle()来监听渲染进程里ipcRenderer.invoke('openFileDialog')里定义openFileDialog。...要做到这一点,你可以使用主进程作为渲染程序之间消息代理。这将涉及从一个渲染器向主进程发送消息,主进程将把消息转发给另一个渲染器,这里就不做演示了。

98540

electron 进程间通信

用大白话来说就是:我们可以在主进程创建窗口时候,指定一些脚本(内容是我们定),这些脚本将来是在渲染进程中使用,但是先于网页内容加载,由于是在主进程时候就预加载了,所以能使用NodeJS API。...由于渲染进程中默认无法使用NodeJS API,也就无法使用 require 导入模块,所以我们需要将 ipcRenderer 模块相关内容在预处理脚本中暴露,才能在渲染进程中使用。...,向主进程发送数据 elecAPI.sendToFather('来自渲染进程问候') } 上面的代码中...渲染进程和主进程双向通信 这可以通过 ipcRenderer.invoke 与 ipcMain.handle 搭配使用来完成双向通信。...WebContents,用使用它send方法向渲染进程发送数据 win.webContents.send('toSon', '来自主进程问候') }, 5000) }) //

7910
您找到你想要的搜索结果了吗?
是的
没有找到

自己实现一个Electron跨进程消息组件(新书自荐)

我们知道开发Electron应用,难免要涉及跨进程通信,以前Electron内置了remote模块,极大简化了跨进程通信开发工作,但这也带来了很多问题,具体细节请参与我之前写文章: https...://www.cnblogs.com/liulun/p/15217180.html Electron团队把remote模块拿掉之后,开发者就只能使用ipcRendereripcMain,webContents..., ipcMain, webContents } = require('electron') 我们假定这个组件类名为Eventer,我们在这个类构造函数中,实例化了一个EventEmitter对象,...默认情况下EventEmitter实例最多可为任何单个事件注册10个监听器,如果你嫌这个数量太少,可以通过setMaxListeners方法把这个数字设置大一些,设置为Infinity就没有任何数量限制了...、ipcMain是否存在来判断当前进程是渲染进程还是主进程; 如果是渲染进程则用ipcRenderer监听一个名为__eventPipe消息;如果是主进程我们则通过ipcMain监听一个名为__eventPipe

1.2K21

electron开发客户端注意事项

子窗口渲染进程给主窗口渲染进程发消息比较麻烦 子窗口要先把消息发送给主进程,再由主进程中转给主窗口 const { ipcRenderer} = require('electron'); ipcRenderer.send...,那么我应该在目录中也删除这个图片 这就需要监控文章编辑器图片变化 我用是H5MutationObserver对象,理论上,用这个东西可以监控任何DOM变化 var editorDocument...因为我用electron-vue,他又两种模式,生产模式和开发模式 在生产模式下没任何问题 在开发模式下,它其实是起了一个webserver,让electron加载一个localhost地址 这样做主要是为了使用...在处理文章提交到知乎过程中 发现知乎用了一个特殊编辑器, (一个基于reactjs编辑器,github上有开源,忘记地址了) 怎么搞都搞不定,他甚至不支持设置HTML内容 最后用了electron...操作剪切板能力才搞定 先把文章内容放到剪贴板,再focus知乎编辑器,再执行黏贴事件 代码如下: const { clipboard, ipcRenderer, remote

2.1K40

electron 构建跨平台桌面应用

NW.js 作者以及各位读者反馈表示感谢,期待更多深入交流和分享,修订后版本如下: Stack Overflow 联合创始人 Jeff Wood 曾说过,任何一个能用 JavaScript 编写应用系统...main.js: 负责创建应用窗口,并赋予其与当前操作系统原生GUI交互功能。 index.html: 定义了页面的渲染内容,即 “Hello World” 字符串。...主进程与渲染进程之间通信通过 IPC(进程间通信)模块完成,IPC模块可划分为 ipcMainipcRenderer 两个部分,其中 ipcMain 对应 主进程中 IPC模块,而 ipcRenderer...则是在渲染进程中使用,下面直接看个例子: main.js: // 引入 ipcMain 模块 const ipcMain = require('electron').ipcMain; // 监听 ‘blabla...参考资料: Electron 官方文档 http://electron.atom.io/ 从 node-webkit Electron 1.0 http://cheng.guru/blog/2016

3.4K110

Electron 快速入门,顺便聊聊 IPC 通信

实际上,Electron 继承了来自 Chromium 多进程架构,作为前端工程师,对于浏览器进程架构有所了解,也是非常有必要。 4.1....,以避免泄漏任何具特权 API 网页内容代码中。...在 Electron 中,主线程和渲染进程之间进行通信,只要是用到以下两个模块: ipcMain :ipcMain 是一个 EventEmitter 实例。...ipcRenderer :ipcRenderer 是一个 EventEmitter 实例。你可以使用它提供一些方法从渲染进程 (web 页面) 发送同步或异步消息主进程。...ipcMain 和 ipcRenderer 模块还有一些其他通信 API,不过大抵都是类似的通信方式,需要了解同学可以自行去查阅文档。 6.

1.2K10

基于ElectronEgg&Python,从零开始打造一款免费PDF桌面工具

例:通过系统默认应用打开浏览PDF文件 渲染器进程主进程(单向) 单向通信只是渲染进程发消息主进程,不需要主进程返回信息。...1、在主线程中通过 ipcMain.on 监听事件 index.ts 主进程中加载脚本,设置事件监听 import { app, dialog, ipcMain, shell } from 'electron...,您可以使用 ipcRenderer.send API。...} 例:主进程错误信息发送给渲染进程,通过界面显示出来 主进程渲染器进程 将消息从主进程发送到渲染器进程时,消息需要通过其 WebContents 实例发送到渲染器进程。...如果您对Python编程技巧、好玩实用开源项目、行业新知趣事和各类技术干货等充满兴趣,那么不要错过未来我为大家奉上精彩内容!点击关注,让您探索学习之旅更加丰富多彩,我们一同成长,一同前行!

37910

一文搞懂Electron四种视图容器和它们之间IPC通信机制

因为Electron封装跨进程通信对象ipcMainipcRenderer都是基于nodejs环境api,而出于安全性考虑,通常需要在生产环境中关闭渲染进程node权限(设置窗口nodeIntegration...BrowserWindow和主进程通信主进程和窗体之间通信几乎是所有业务刚需,Electron官方提供了基于IpcMainIpcRenderer封装,鉴于官方文档已经描述得非常清晰,此处不再罗列代码...和宿主窗口通信因为选中对象具有send方法,等同于ipcRenderer.send,使用它可以直接从宿主窗口抛送事件webview内部,在内部需要通过ipcRenderer.on...子业务代码加载之前,我们就可以建立好和主进程之间通道,并且把子业务需要调用接口,封装成类似于jsApi形式,暴露渲染上下文,而无需入侵子业务任何代码,还可以考虑不同子业务公共接口复用,从架构来说比...接下来我们实现一个通用注册事件,在app启动之后就执行绑定,后续任何子业务被创建,都会触发注册流程。

7.6K75

electron+vue全家桶开发包含(心得,遇见坑,解决办法等)

,所以本篇博客会从electron api electron +vue 组合式开发到 打包 及开发过程中遇见问题分门别类进行说明, 当然在最后文末我会将我写 electron + vue全家桶...流程之间通信可以通过进程间通信模块进行: ipcMainipcRenderer 接下来分别说一下渲染进程和主进程 /* 个人认为electron难点主要就是 主进程和渲染进程之间通信...第 18 行:您添加了一个新侦听器,当应用程序不再有任何打开窗口时试图退出。 因为操作系统 窗口管理行为 ,此监听器在 macOS 上是一个禁门。...// 在main 文件夹下 index.js 中 //引入 let ipcMain = require('electron').ipcMain; // 通过命令进行判断 //接收最小化命令 ipcMain.on...//let whiteListedModules = ['vue'] //将这行修改为下面的内容 let whiteListedModules = ['vue', 'element-ui']

38310

Electron快速入门,聊聊跨进程通信那些事儿

Electron 中通过提供ipcMainipcRenderer来作为主进程、渲染进程之间通信桥梁。...从接口定义中不难推断出其管道IPC是通过继承 EventEmitter 来实现IpcMainIpcRenderer,并拓展了其他工具类方法。...主进程TO渲染进程 渲染进程是由主进程控制,通过创建渲染进程窗口win.webContents对象,可以轻易地访问渲染进程相关内容。 这里官网相关事例说明相对完善,可以自行查看。...当然,需要发送消息给目标窗口是打开状态,否则可就接受不到了。 到此,三种场景进程通信介绍完毕了。...Electron GUI应用开发之中,当然如果你执着于 jQuery,也是可以引用开发,只是不建议而已,这就涉及 Electron 性能相关了,这里不再展开。

1.6K20

第一个Electron应用

这就涉及进程间通信了,具体来说是渲染进程主进程通信。 渲染进程主进程通信 进程间通信需要用到预加载脚本。...页面打开后,页面需要获取文件数据,作为初始数据渲染画布,这个需要渲染进程给主进程发信息,并且能接收数据,还是渲染进程主进程通信,只不过是双向。...渲染进程主进程通信(双向) 同样是使用ipcRenderer对象,只不过不是使用send和on方法,而是使用invoke和handle方法。...('getFileContent', id) } // background.js // 获取文件内容 ipcMain.handle('getFileContent', (event, id) => {...item }) } 当然,这个操作只是更新了客户端存储,还需要通知页面更新才行,这就涉及主进程渲染进程通信了。

1.1K60

electron入门指南

后者提供浏览器环境,渲染页面 进程间通信支持程度比较好,有同步和异步两种方式,通过事件消息来通信 异步通信(event.sender.send()): // In main process. const {ipcMain...} = require('electron') ipcMain.on('asynchronous-message', (event, arg) => { console.log(arg) // prints..."pong" }) ipcRenderer.send('asynchronous-message', 'ping') 同步通信(event.returnValue): // In main process.... const {ipcMain} = require('electron') ipcMain.on('synchronous-message', (event, arg) => { console.log...,但没有勾选,可能需要制定应用路径,待深入了解 写在最后 实际上,对系统级API依赖比想象少太多了,学习成本大多来自前端生态(React全家桶),完全合心意组件库是不存在 东西呢,还不成样子,下周继续

1.5K30
领券