Electron 学习_在进程之间通信

news2024/10/6 10:26:21

1.问题:Electron的主进程和渲染进程有着清楚的分工,并且不可互换。从渲染进程直接访问Node.js 接口,亦或者 从主进程访问HTML文档对象模型(DOM)都是不可能的
2.解决方法:使用进程间通信 (IPC)
可以使用 Electron 的ipcMain 模块和ipcRenderer 模块来进行进程间通信。从网页上向主进程发送消息,可以使用ipcMain.handle 设置一个主进程处理程序(handler)然后在云处理脚本中暴露一个被称为 ipcRenderer.invoke 的函数来出发该处理程序(handler)

3.preload.js添加ping()

// 引入ipcRenderer
const { contextBridge, ipcRenderer } = require('electron')

contextBridge.exposeInMainWorld('versions', {
  node: () => process.versions.node,
  chrome: () => process.versions.chrome,
  electron: () => process.versions.electron,
  ping: () => ipcRenderer.invoke('ping')
  // 除函数之外,我们也可以暴露变量
})

4.main.js

//引入 ipcMain 
const { app, BrowserWindow, ipcMain } = require('electron')
const path = require('path')

const createWindow = () => {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })
  win.loadFile('index.html')
}
app.whenReady().then(() => {
  ipcMain.handle('ping', () => 'pong') //在主进程中设置你的 handle 监听器
  createWindow()
})

5.renderer.js

const func = async () => {
  const response = await window.versions.ping()
  console.log(response) // 打印 'pong'
}

func()

6.效果(ctrl+shift+I 调出console 窗口)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/777397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redisson限流器RRateLimiter使用及源码分析

一、使用 使用很简单、如下 // 1、 声明一个限流器 RRateLimiter rateLimiter redissonClient.getRateLimiter(key);// 2、 设置速率,5秒中产生3个令牌 rateLimiter.trySetRate(RateType.OVERALL, 3, 5, RateIntervalUnit.SECONDS);// 3、试图获取一个令牌&#…

TCP首部格式【TCP原理(笔记五)】

文章目录 TCP首部格式源端口号(Source Port)目标端口号(Destination Port)序列号(Sequence Number)确认应答号(Acknowledgement Number)数据偏移(Data Offset&#xff09…

Oracle 普通视图 (Oracle Standard Views)

视图(views)是一种基于表的"逻辑抽象"对象,由于它是从表衍生出来的,因此和表有许多相同点,我们可以和对待表一样对其进行查询/更新操作。但视图本身并不存储数据,也不分配存储空间。 本文只讨论普…

Linux下搭建pyqt5开发环境—基于Pycharm

防踩坑Tips: 1、不能学windows那样直接用pip安装PyQt5Designer和pyqt5-tools。这两个模块最根本的是用的windows的程序,linux上是运行不了的,特别是PyQt5Designer,会提示安装失败。 2、推荐在python环境安装同系统版本一致的pyq…

2023.7.16 第五十九次周报

目录 前言 文献阅读:跨多个时空尺度进行预测的时空 LSTM 模型 背景 本文思路 本文解决的问题 方法论 SPATIAL 自动机器学习模型 数据处理 模型性能 代码 用Python编写的LSTM多变量预测模型 总结 前言 This week, I studied an article that uses LSTM to solve p…

数据分析系统中的六边形战士——奥威BI系统

数据分析软件可以对收集的数据进行分析和报告,帮助企业获得更深入的数据洞察力,从而推动企业数字化运营决策,提高决策效率与质量。进入大数据时代,企业对数据分析软件的要求也在水涨船高,传统的数据分析软件显然已不能…

数据结构 单向链表(不循环)的基础知识和基础操作

头定义: typedef int datatype; typedef struct Node {//数据域存储数据datatype data;//指针域存储下一个地址struct Node *next; }*Linkelist; 创建节点 Linkelist create_node()//创建新节点 {Linkelist node(Linkelist)malloc(sizeof(struct Node));if(nodeN…

Elasticsearch 源码探究 001——故障探测和恢复机制

1、Elasticsearch 故障探测及熔断背景 探究Elasticsearch7.10.2 节点之间的故障探测以及熔断故障是怎么做的,思考生产上的最佳实践。 服务端故障场景: 单个master挂掉 除了断点断网,状态同步异常,主master也会认为自己已经失败&am…

ASPICE V模型之软件需求

ASPICE V模型之软件需求 了解ASPICE认识软件需求软件需求分解软件需求工作流程 了解ASPICE ASPICE全称是“Automotive Software Process Improvement and Capacity Determination”汽车软件过程改进及能力评定,是汽车行业用于评价软件开发团队的研发能力水平的模型框…

全球生成式AI大竞赛,Llama 2大模型现已可在亚马逊云科技上使用

一直以来Llama可以说是AI社区内最强大的开源大模型。但因为开源协议问题,一直不可免费商用。7月19日,Meta发布了大家期待已久的免费可商用版本Llama 2。一夜之间,大模型格局再次发生巨变。 作为Meta宣布的首批合作伙伴之一,现亚…

Ubuntu 安装Postgresql与PostGIS

1.前言 最近在做GIS分析,采集设备的经纬度点判断是否进出围栏以及是否产生道路偏移报警,在之前的文章有介绍过Windows下使用C#来实现,参考文章:利用PostgresqlPostgis进行空间地理信息分析(道路偏移,进出电…

sql注入---报错注入

updatexml():对XML文档数据进行查询和修改 extractvalue():对XML文档数据进行查询 floor():取整的函数 前提是未关闭数据库报错函数,对于一些SQL语句的错误…

Java反射、动态代理

文章目录 反射什么是动态代理?程序为什么需要代理?代理长什么样? 反射 java反射机制原理:我们写的源代码是.java文件,通过javac编译后成为.class文件,即字节码文件,程序执行时,JVM会类加载字节码文件到内…

浅谈单片机

目录 1.什么是单片机 2.单片机的作用? 3.单片机的种类 4.如何学好单片机 5. 单片机的就业前景 1.什么是单片机 单片机(Microcontroller Unit,简称MCU)是一种集成了微处理器核心、存储器、输入输出端口和各种外围功能模块于一体…

Rspack 学习了解

一、简介 Rspack GitHub 仓库、Rspack Quick start。 Rspack 是由字节 ByteDance Web Infra 团队基于 Rust 语言开发的 Web 高性能构建工具。 Rust 是种高效、可靠的通用高级语言。其高效不仅限于开发效率,执行效率也是令人称赞的,属于少有兼顾开发效率…

vulnhub打靶--buli_b0x

目录 vulnhub--buli_b0x1.下载靶机2.导入靶机,开启靶机,nmap扫描3.探测目录,发现敏感目录4.通过test.php下载源码5.代码审计6.提权7.总结 vulnhub–buli_b0x 1.下载靶机 Billu_b0x.zip 2.导入靶机,开启靶机,nmap扫描…

分布式 RPC 框架HSF

分布式 RPC 框架HSF 概述HSF架构调用方式优势应用场景 概述 HSF (High-speed Service Framework),高速服务框架,是在阿里巴巴内部广泛使用的分布式 RPC 服务框架。HSF 作为阿里巴巴的基础中间件,联通不同的业务系统,解耦系统间的…

WebSocket笔记

1. websocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。 HTTP协议和WebSocket协议对比: HTTP是短连接W…

iOS--动静态库

文章目录 认识动静态库静态库动态库静态的打包静态库的使用动态库的打包动态库的使用 动静态库的本质就是可执行程序的"半成品"。 需要完成一个可执行程序需要经历以下四个步骤: 预处理:完成头文件的展开,去掉注释,宏替换,条件编译…

微信小程序学习笔记(五)——优化

下拉刷新后主动关闭 Page({onPullDownRefresh: function() {// ...wx.stopPullDownRefresh()} })在发起请求时设置 loading,请求结束后关闭 Page({onLoad: function(options) {wx.showLoading({title: 数据加载中...}) // 展示 loadingwx.request({// ...complete: …