当前位置: 首页 > news >正文

【Electron学习笔记(四)】进程通信(IPC)

进程通信(IPC)

    • 进程通信(IPC)
    • 前言
    • 正文
    • 1、渲染进程→主进程(单向)
    • 2、渲染进程⇌主进程(双向)
    • 3、主进程→渲染进程

进程通信(IPC)

前言

在Electron框架中,进程间通信(IPC)是构建功能丰富的桌面应用程序的关键。本文将深入探讨Electron中的IPC机制,主要包括三个方面:渲染进程到主进程的单向通信、渲染进程与主进程之间的双向通信,以及主进程到渲染进程的单向通信。通过ipcMain和ipcRenderer模块,Electron实现了不同进程间的消息传递,从而确保了应用程序的高效运行和功能的丰富性。
笔记源于:禹神:一小时快速上手Electron,前端Electron开发教程

正文

1、渲染进程→主进程(单向)

  • 概述:在渲染器进程ipcRenderer.send 发送消息,在主进程中使用 ipcMain.on 接收消息
  • 常用于在 Web 中调用主进程的 API,例如下面这个需求:
    需求:点击按键后,在用户的 D 盘创建一个 hello.txt 的文件,文件内容来自于用户输入
  • 实现步骤
    1. index.html 页面中添加相关元素

      在这里插入图片描述

    2. render.js 中添加对应脚本

      在这里插入图片描述

    3. preload.js 中使用 ipcRenderer.send('信道','参数') 发送信息,与主进程通信

      在这里插入图片描述

    4. main.js主进程中接收信息,并定义函数执行操作

      在这里插入图片描述

      在这里插入图片描述

2、渲染进程⇌主进程(双向)

  • 概述渲染进程通过 ipcRenderer.invoke 发送消息 ,主进程使用 ipcMain.handle 接收并处理消息
    备注: ipcRenderer.invoke 的返回值是 Promise 实例
  • 常用于从渲染器进程调用主进程方法并等待结果,例如下面这个需求:
    需求:点击按键后,从 D 盘读取 hello.txt 的文件的内容,并将结果呈现在页面上
  • 实现步骤
    1. index.html 页面中添加相关元素

      在这里插入图片描述

    2. render.js 中添加对应脚本

      在这里插入图片描述

    3. preload.js 中使用 ipcRenderer.invoke('信道','参数') 发送信息,与主进程通信

      在这里插入图片描述

    4. main.js 主进程中接收信息,并定义函数执行操作

      在这里插入图片描述

    5. render.js 中接收从 main.js->preload.js 得到的结果

      在这里插入图片描述

3、主进程→渲染进程

  • 概述主进程使用 win.webContents.send 发送消息,在渲染进程中使用 ipcRenderer.on 接收消息
  • 常用于从主进程主动发送消息到渲染进程,例如下面这个需求:
    需求:应用加载6秒后,主动给渲染进程发送一个消息,内容是:hello
  • 实现步骤
    1. index.html 页面中添加相关元素, render.js 中添加对应脚本

      在这里插入图片描述

    2. preload.js 中使用 ipcRenderer.send('信道','参数') 接收消息,并配置回调函数
      在这里插入图片描述

    3. main.js主进程中在合适的时候,使用 win.webContents.send('信道','参数') 发送消息

      在这里插入图片描述

相关文章:

【Electron学习笔记(四)】进程通信(IPC)

进程通信(IPC) 进程通信(IPC)前言正文1、渲染进程→主进程(单向)2、渲染进程⇌主进程(双向)3、主进程→渲染进程 进程通信(IPC) 前言 在Electron框架中&…...

Java 中的 remove 方法深度解析

在 Java 编程中,remove方法是一个经常被使用的操作。它可以用于从各种数据结构中移除特定的元素,帮助我们有效地管理和操作数据。本文将深入探讨 Java 中的remove方法,包括在不同数据结构中的应用、使用场景、注意事项以及性能考虑等方面。 …...

企业品牌曝光的新策略:短视频矩阵系统

企业品牌曝光的新策略:短视频矩阵系统 在当今数字化时代,短视频已经渗透到我们的日常生活之中,成为连接品牌与消费者的关键渠道。然而,随着平台于7月20日全面下线了短视频矩阵的官方接口,许多依赖于此接口的小公司和内…...

【初阶数据结构与算法】二叉树顺序结构---堆的应用之堆排、Top-K问题

文章目录 一、堆排引入之使用堆排序数组二、真正的堆排1.向上调整算法建堆2.向下调整算法建堆3.向上和向下调整算法建堆时间复杂度比较4.建堆后的排序4.堆排序和冒泡排序时间复杂度以及性能比较 三、Top-K问题 一、堆排引入之使用堆排序数组 在了解真正的堆排之前,我…...

vue3 + ts 使用 el-tree

实现效果&#xff1a; 代码&#xff1a; <template><!-- el-tree 使用 --><div class"my-tree-container"><el-scrollbar height"100%"><el-tree ref"treeRef" :data"treeData" node-key"id" n…...

Create Stunning Word Clouds with Ease!

Looking to craft breathtaking word clouds? WordCloudStudio is your go-to solution! Whether you’re a marketer, educator, designer, or simply someone who loves visualizing data, this app has everything you need. Download now: https://apps.apple.com/app/wor…...

html+css网页设计 旅游 马林旅行社5个页面

htmlcss网页设计 旅游 马林旅行社5个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#…...

python selenium(4+)+chromedriver最新版 定位爬取嵌套shadow-root(open)中内容

废话不多说&#xff0c;直接开始 本文以无界作为本文测试案例&#xff0c;抓取shadow-root&#xff08;open&#xff09;下的内容 shadow Dom in selenium&#xff1a; 首先先讲一下shadow Dom in selenium 版本的区别&#xff0c;链接指向这里 在Selenium 4版本 以及 chrom…...

React基础教程(11):useCallback记忆函数的使用

11、useCallback记忆函数 防止因为组件重新渲染,导致方法被重新创建,起到缓存作用,只有第二个参数变化了,才重新声明一次。 示例代码: import {useCallback, useState} from "react";const App = () =>...

arp-scan 移植到嵌入式 Linux 系统是一个涉及多个步骤的过程

将 arp-scan 移植到嵌入式 Linux 系统是一个涉及多个步骤的过程。arp-scan 是一个用于发送 ARP 请求以发现网络上设备的工具&#xff0c;它依赖于一些标准的 Linux 库和工具。以下是将 arp-scan 移植到嵌入式 Linux 系统的基本步骤&#xff1a; 1. 获取 arp-scan 源码 首先&a…...

【Linux】常用命令一

声明&#xff1a;以下内容均学习自《Linux就该这么学》一书。 Linux中的shell是一种命令行工具&#xff0c;它充当的作用是人与内核(硬件)之间的翻译官。 大多数Linux系统默认使用的终端是Bash解释器。 1、echo 用于在终端输出字符串或变量提取后的值。 echo "字符串…...

在鲲鹏麒麟服务器上部署MySQL主从集群

因项目需求需要部署主从MySQL集群&#xff0c;继续采用上次的部署的MySQL镜像arm64v8/mysql:latest&#xff0c;版本信息为v8.1.0。计划部署服务器192.168.31.100和192.168.31.101 部署MySQL主节点 在192.168.31.100上先创建好/data/docker/mysql/data和/data/docker/mysql/l…...

Siknhorn算法介绍

SiknHorn算法是一个快速求解离散优化问题的经典算法&#xff0c;特别适用于计算离散分布之间的**最优传输&#xff08;Optimal Transport&#xff09;**距离&#xff1b; 最优传输问题介绍 计算两个概率分布 P 和 Q 之间的传输成本&#xff0c;通常表示为&#xff1a; 是传输…...

群控系统服务端开发模式-应用开发-邮箱短信通道功能开发

邮箱短信通道主要是将邮箱及短信做归属的。具体见下图&#xff1a; 一、创建表 1、语句 CREATE TABLE cluster_control.nc_param_emailsms (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 编号,email_id varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NO…...

[docker中首次配置git环境]

11月没写东西&#xff0c;12月初赶紧水一篇。 刚开始搭建docker服务器时&#xff0c;网上找一堆指令配置好git后&#xff0c;再次新建容器后忘记怎么配了&#xff0c;&#xff0c;这次记录下。 一、git ssh指令法&#xff0c;该方法不用每次提交时输入密码 前期准备&#xff0…...

书生浦语·第四期作业合集

目录 1. Linux基础知识 1.1-Linux基础知识 1.在终端通过ssh 端口映射连接开发机 2. 创建helloworld.py 3.安装相关包并运行 4.端口映射并访问相关网页...

5G学习笔记之PRACH

即使是阴天&#xff0c;也要记得出门晒太阳哦 目录 1. 概述 2. PRACH Preamble 3. PRACH Preamble 类型 3.1 长前导码 3.2 短前导码 3.3 前导码格式与小区覆盖 4. PRACH时频资源 4.1 小区所有可用PRACH资源 4.2 SSB和RACH的关系 4.3 PRACH时频资源配置 1. 概述 随机接入…...

Ubuntu24.04配置DINO-Tracker

一、引言 记录 Ubuntu 配置的第一个代码过程 二、更改conda虚拟环境的默认安装路径 鉴于不久前由于磁盘空间不足引发的重装系统的惨痛经历&#xff0c;在新系统装好后当然要先更改虚拟环境的默认安装路径。 输入指令&#xff1a; conda info可能因为我原本就没有把 Anacod…...

抓包之查看websocket内容

写在前面 本文看下websocket抓包相关内容。 1&#xff1a;正文 websocket基础环境搭建参考这篇文章。 启动后&#xff0c;先看chrome的network抓包&#xff0c;这里我们直接使用is:running来过滤出websocket的请求&#xff1a; 可以清晰的看到发送的内容以及响应的内容。在…...

【Leetcode Top 100】21. 合并两个有序链表

问题背景 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 数据约束 两个链表的节点数目范围是 [ 0 , 50 ] [0, 50] [0,50] − 100 ≤ N o d e . v a l ≤ 100 -100 \le Node.val \le 100 −100≤Node.val≤100 l 1 l_1 …...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...