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

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

✧ 渲染进程向主进程的单向通信 在Electron中,进程通过开发人员定义的“通道”与ipcMain模块和ipcRenderer模块进行通信。...要从渲染进程向主进程发送单向IPC消息,可以再预渲染脚本preload.js里使用ipcRenderer发送API发送消息,然后在main.js里用ipcMain.on接收。...== 'darwin') app.quit() }) 运行效果演示: 对部分代码讲解: 我们首先需要在主流程中使用Electron的Menu模块构建一个自定义菜单,从主进程向目标渲染器发送IPC...和ipcRederer模块向渲染进程公开IPC功能: const { contextBridge, ipcRenderer } = require('electron') contextBridge.exposeInMainWorld...这将涉及到从一个渲染器向主进程发送消息,主进程将把消息转发给另一个渲染器,这里就不做演示了。

1.2K40

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

前端ElectronEgg 前端GUI页面主要使用 Electron + Vue3 实现,前端和后端的通信主要使用 Node 中的 child_process 实现, 前端页面的通信使用 IPC 实现。...默认情况下,渲染器进程没有权限访问 Node.js 和 Electron 模块。 作为应用开发者,您需要使用 contextBridge API 来选择要从预加载脚本中暴露哪些 API。...在您的预加载脚本中添加以下代码,向渲染器进程暴露一个全局的 window.electronAPI 变量。...const { contextBridge, ipcRenderer } = require('electron') contextBridge.exposeInMainWorld('electronAPI...,通过界面显示出来 主进程到渲染器进程 将消息从主进程发送到渲染器进程时,消息需要通过其 WebContents 实例发送到渲染器进程。

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

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

    而 Cocos Creator 是基于 Electron 进行开发的,所以学习了一些关于 Electron IPC 通信的相关知识,在这里做一个总结。...(比如有些人会把 ipcRenderer.send 的方法暴露给 web 端,这将允许网站发送任意的 IPC 消息) 我们也可以关闭 contextIsolation,不过不建议这么做。...contextIsolation: false } }) 最好使用 contextBridge 模块来安全地实现交互: const { contextBridge } = require('electron...Electron IPC 通信 Electron 有主进程和渲染进程,之间会有许多通信,这样就涉及到了进程间通信(IPC,InterProcess Communication)。...当在主进程中使用时,它处理从渲染器进程(网页)发送出来的异步和同步信息。从渲染器进程发送的消息将被发送到该模块。

    1.8K11

    预加载脚本 | Electron 安全

    例如 // preload.js const { contextBridge } = require('electron'); contextBridge.exposeInMainWorld('myAPI...webFrame webUtils 这里的 contextBridge 是用来向渲染进程暴露变量/常量和函数的方法,在下面的部分详细介绍;ipcRenderer 是 Preload 脚本用来和主进程进行...') webFrame.setZoomFactor(2) 很方便,确实大了 webUtils 与Web API对象(文件、Blob等)交互的实用程序层 https://www.electronjs.org...== 'darwin') { app.quit(); } }); 可以通过与主进程 IPC 通信,之后传递要执行的命令的字符串,并通过 IPC 传递会渲染进程 此时并不能说主进程写得不安全...Preload 自己使用的,但是不小心暴露给了渲染进程;函数是给自己写的渲染进程使用的,结果同时暴露给了 iframe 这种嵌入内容等 预加载脚本是一个很好的代码审计的切入点,如果安全配置较为完善,则安全漏洞的利用基本都要通过预加载脚本传递数据

    37720

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

    ,监听其它进程发来的事件,这是Electron内建ipc通信的基础。...它会在渲染器加载页面之前运行, 可以同时访问 DOM 接口和 Node.js 环境,并且可以通过 contextBridge 接口将特权接口暴露给渲染器。...五、内嵌视图容器 Tag通过前文可以看出,BrowserView和iframe各有各的局限,前者独立于宿主的文档流之外,无法跟随宿主页面的排版规则,也没办法覆盖一些全局的弹窗和浮层,...隔离底层细节业务侧通常不关心通道建立的细节,只希望能够获取数据,执行命令,我们希望把ipc通信封装得尽可能简单简便,方便业务侧理解和使用。...也可以对webview里的一些行为做出限制,比如禁止重定向等等,具体可以参阅Electron官方文档。七、总结本文介绍了Electron里的四种视图容器的特点以及各自的ipc通信方式。

    11.1K76

    Electron 进程通信(IPC)装饰器应用

    在 Electron 在实现渲染进程到主进程通信时,无论是单向通信还是双向通信都必须经过:编写处理函数(主进程)、注册事件监听(主进程)、暴露 API(预加载脚本)和执行 API(渲染进程)4 个步骤。...IPC 通信 API 渲染进程到主进程通信涉及到的 API 如下: 渲染进程到主进程 发送 接收 单向 ipcRenderer.send ipcMain.on 双向 ipcRenderer.invoke...+ **Vite **项目,移植 TypeScript 项目中的依赖、配置及关键代码(已标 *****),接下来完成与 Electron IPC 通信 API 的对接实现自动注册业务机制: 定义业务服务...进程通信代码利用 TypeScript 装饰器进行封装,实现注册事件监听和暴露 API 的操作自动化,在遇到新的进程通信功能时仅需要按约定实现业务部分的核心服务后即可在渲染进程中直接执行 API。...PS:源码访问 reflect-ipc-channels 获取;

    23610

    我的第一个Electron应用

    预加载脚本会在渲染器进程加载之前加载,并有权访问:两个渲染器全局对象 ( window 和 document) 、Node.js 环境。...可以在预加载脚本中通过contextBridge.exposeInMainWorld方法在页面的window对象上挂载属性和方法,这样页面就能使用了,具体的使用后面会介绍。...为了在页面内方便的判断当前的系统,我们可以在预加载脚本中注入一个全局变量: // preload.js const { contextBridge } = require('electron') contextBridge.exposeInMainWorld...我们可以在预加载脚本中给页面注入一些全局方法,然后在方法中使用进程间通信 (IPC)通知主进程,拿前面的控制器为例: // preload.js const { contextBridge, ipcRenderer...页面打开后,页面需要获取文件的数据,作为初始数据渲染到画布,这个需要渲染进程给主进程发信息,并且能接收数据,还是渲染进程到主进程的通信,只不过是双向的。

    1.4K60

    JavaScript中的图形用户界面:Electron框架

    可以使用部分 Node.js API(通过 contextIsolation 和 nodeIntegration 配置)。IPC(进程间通信):主进程和渲染进程之间的通信机制。...丰富的生态系统:Electron可以利用Node.js的庞大生态系统,以及前端开发中的各种库和框架。性能接近原生应用:虽然Electron是基于Web技术,但其性能和用户体验接近原生应用程序。...易于开发和调试:Electron应用可以使用前端开发者熟悉的工具进行开发和调试。Electron应用开发基础环境搭建在开始开发Electron应用之前,需要确保安装了Node.js和npm。...('electron');contextBridge.exposeInMainWorld('api', { send: (channel, data) => { // whitelist channels...进程间通信(IPC):Electron提供了进程间通信的机制,允许主进程和渲染进程之间安全地交换数据。操作系统集成:Electron允许应用与操作系统的功能集成,如菜单、通知、系统托盘等。

    17210

    浅谈electron

    使用Electron的API Electron 在主进程和渲染进程中提供了大量 API 去帮助开发桌面应用程序, 在主进程和渲染进程中,可以通过require() 方法将其包含在模块中,以此获取 Electron...IPC(Inter-Process Communication,进程间通信 IPC 异步通信 异步通信,在发送消息之后,不会阻止同一进程中程序的继续运行。...示例: 渲染器进程: const ipc = require('electron').ipcRenderer const asyncMsgBtn = document.getElementById(...') }) 同步消息 除了以异步方式在进程之间发送消息,我们还可以使用 ipc 模块在进程之间发送同步消息,但是此方法的同步特性意味着它在完成任务时会阻止其他操作。...示例: 渲染器进程: const ipc = require('electron').ipcRenderer const syncMsgBtn = document.getElementById('

    2.2K20

    VSCode 源码解读:IPC通信机制

    在 Electron 中,分为主进程(main process)和渲染器进程(renderer processes):主进程:一个 Electron 应用中,有且只有一个主进程(package.json...于是,在 Electron 中,可以通过以下方式来进行主进程和渲染器进程的通信:利用ipcMain和ipcRenderer模块进行 IPC 方式通信,它们是处理应用程序后端(ipcMain)和前端应用窗口...这样,主进程和渲染器进程的 JavaScript 上下文将保持独立,但是可以在进程之间以显式方式传输数据。...IPC 实际上就是发送和接收信息的能力,而要能准确地进行通信,客户端和服务端需要在同一个频道上。频道作为一个频道而言,它会有两个功能,一个是点播call,一个是收听,即listen。...(Electron)你不知道的 Electron (一):神奇的 remote 模块结束语IPC 和 RPC 通信是由于 Electron 的跨进程通信出现的。

    52271

    仅仅过去 4 年,微软最终放弃了它!

    与 Electron 不同,WebView2 会监控 Chromium 的行为、检测还有多少系统内存可用,从而更有效地利用内存资源优化渲染体验。...与应用套件类似,使用相同用户数据文件夹的各 WebView2 应用程序之间会共享非渲染器进程,但使用不同数据文件夹的 WebView2 应用程序之间则不共享任何进程。...在 Chromium 当中,浏览器进程负责充当沙箱渲染器与系统其余部分之间的 IPC 代理。虽然 Electron 支持非沙箱渲染进程,但也有不少应用会选择启用沙箱以提升安全水平。...虽然 Electron 与 WebView2 的流程模型基本相似,但底层 IPC 却有所不同。...利用这项功能,应用程序就能避免在不同进程间发送对象时执行资源成本高昂的 JSON 序列化操作。

    2.7K10

    Electron 吞噬资源,微软 Teams 为性能改用 WebView2

    与 Electron 不同,WebView2 会监控 Chromium 的行为、检测还有多少系统内存可用,从而更有效地利用内存资源优化渲染体验。...与应用套件类似,使用相同用户数据文件夹的各 WebView2 应用程序之间会共享非渲染器进程,但使用不同数据文件夹的 WebView2 应用程序之间则不共享任何进程。...在 Chromium 当中,浏览器进程负责充当沙箱渲染器与系统其余部分之间的 IPC 代理。虽然 Electron 支持非沙箱渲染进程,但也有不少应用会选择启用沙箱以提升安全水平。...利用这项功能,应用程序就能避免在不同进程间发送对象时执行资源成本高昂的 JSON 序列化操作。 Electron 与 WebView2 虽然有着不少差异之处,但二者在渲染 Web 内容方面却高度一致。...“ Electron 是 GitHub 开发的开源框架,而且 GitHub 的 Atom 和微软的 VSCode 编辑器用的都是它。

    3.6K50

    Electron启程

    Electron同时在主进程和渲染进程中对Node.js 暴露了所有的接口。 主进程和渲染进程模块 两种进程都可用的模块 clipboard 在系统剪贴板上执行复制和粘贴操作。...contentTracing 从Chromium的内容模块收集跟踪数据,以查找性能瓶颈和缓慢的操作。 dialog 显示用于打开和保存文件、警报等的本机系统对话框。...Renderer Process 模块 desktopCapturer 从桌面上捕获音频和视频的媒体源信息。 ipcRenderer 从渲染器进程到主进程的异步通信。...你还可以用 Electron 内的 IPC 机制实现。将数据存在主进程的某个全局变量中,然后在多个渲染进程中使用 remote 模块来访问它。...= require('electron').ipcMain; //进行监控,如果有new-window 发送过来,则重新创建一个窗口,文件是list.html ipc.on('new-window',

    5.7K30

    IM跨平台技术学习(十一):环信基于Electron打包Web IM桌面端的技术实践

    本文由环信技术黄飞鹏分享,原题“实战|如何利用 Electron 快速开发一个桌面端应用”,本文进行了排版和内容优化等。...1、引言早就听说利用Electron可以非常便捷的将网页端快速打包成桌面应用,并且利用 Electron 提供的 API 调用可以使用原生桌面 API 一些高级功能。...例如,您可以使用 wait-on 等待数据库连接、消息队列和其他服务就绪后再启动您的应用程序。这样可以确保您的应用程序在尝试使用这些资源之前不会崩溃。...由于渲染进程只能访问 Web API 而不能直接访问 Node.js API,因此如果需要在渲染进程中使用 Node.js API,就需要通过 IPC 机制向主进程发出请求,由主进程代为执行并将结果返回给渲染进程...如果想要实现主进程和渲染进程之间的通信,必须使用 Electron 提供的 IPC 机制,通过发送消息的方式来进行进程间通信。

    17510

    electron入门实战

    : 浏览器端(Browser)、渲染器端(Render)、浏览器与渲染器的通信方式(IPC) 1.浏览器进程 浏览器进程 Browser​​ 只有一个,当 Chrome​​ 打开时,进程启动。...浏览器与渲染器通过 IPC​​ 进行通信。 2.渲染进程管理 每个渲染进程都有一个全局 RenderProcess​​ 对象,可以管理其与父浏览器进程之间的通信,并维护其全局状态。...RenderViewHost​​ 和 Webkit​​ 嵌入层通信,渲染出网页网页内容(这里是我们日常主要关注的地方)。...通过利用 Chromium 的 WebRTC 技术,Electron 应用程序可以实现实时音视频通讯和数据传输。...更新管理困难:由于 Electron 应用程序需要更新整个应用程序包,因此更新管理可能会比较困难,尤其是在用户数据存储和应用程序配置方面。

    44770

    contextIsolation | Electron 安全

    和 Electron的内部逻辑运行在所加载的 webcontent网页之外的另一个独立的上下文环境里。...主进程可以通过 BrowserWindow 创建窗口,即渲染器进程 渲染器进程 每个 Electron 应用都会为每个打开的 BrowserWindow ( 与每个网页嵌入 ) 生成一个单独的渲染器进程...因此,一个浏览器窗口中的所有的用户界面和应用功能,都应与您在网页开发上使用相同的工具和规范来进行攥写 此外,这也意味着渲染器无权直接访问 require 或其他 Node.js API。...// preload.js const { contextBridge } = require('electron') contextBridge.exposeInMainWorld('myAPI...的 Bug,作者反馈给了 Electron 利用这个漏洞或者叫 Bug,我们就可以成功绕过导航限制,之后就是使用 iframe 的 XSS 导航到包含 RCE 代码的页面,比如 top.location

    52610
    领券