Electron一些概念理解

devtools/2024/11/25 6:23:42/

前言

版本33.2.0

记录官方文档的一些初步理解

官方文档

自写demo: electron-demo 按钮点击发送http请求

主进程

一个Electron应用项目都会有一个主进程,启动入口

只有这个主进程,运行在Node.js环境中,可以require其他模块,用API

渲染器进程

每一个窗口都会有一个渲染器进程

这边我的理解是,就像一个html页面引入的一个普通js脚本

但是用上Electron的ipc通道API,就理解为是文档所说的一个渲染器进程

这里不能像主进程的js一样直接使用npm的模块

主进程的操作也不能直接渲染页面

主进程和渲染器进程交互

通信方式

通信方式 IPC通道

通过开发人员自己定义的”通道”来传递信息

在Electron框架中,涉及两个模块ipcMainipcRenderer

本身主进程和渲染器进程是相互隔离的

通过写一个preload.js (用来定义通道接口)(这个由主进程加载,因此可以调用API)

然后渲染器进程可以通过这个通道接口,与主进程交互,主进程中调用API操作

模式1: 渲染器进程到主进程(单向)

// preload.js
const { contextBridge, ipcRenderer } = require('electron/renderer')contextBridge.exposeInMainWorld('electronAPI', {setTitle: (title) => ipcRenderer.send('set-title', title)
})

渲染器进程调用这个接口, 会将title发给主进程

window.electronAPI.setTitle(title)

上面用ipcRenderer.send发送,主进程那边用ipcMain.on接收消息

文档提到了以前Electron 7的时候,ipcRenderer.send也可以用异步双向通信

模式2: 渲染器进程到主进程(双向)

// preload.js
const { contextBridge, ipcRenderer } = require('electron/renderer')contextBridge.exposeInMainWorld('electronAPI', {openFile: () => ipcRenderer.invoke('dialog:openFile')
})

渲染器进程使用,await等待主进程的返回

const filePath = await window.electronAPI.openFile()

通过ipcRenderer.invokeipcMain.handle搭配使用

其他

ipcRenderer.send也支持异步双向通信,但后续可能会被丢弃,不建议这样使用


http://www.ppmy.cn/devtools/136768.html

相关文章

el-table vue3统计计算数字

固定合计在最下列 父组件 <template><el-tablev-loading"loading"tooltip-effect"light":data"list"style"width: 100%":max-height"maxHeight"element-loading-text"拼命加载中...":header-cell-styl…

蓝桥杯每日真题 - 第20天

题目&#xff1a;&#xff08;机房&#xff09; 题目描述&#xff08;13届 C&CG题&#xff09; 解题思路&#xff1a; 这道题目可以看作在一个无向图中查找两点之间的最短路径。题目中的 n 台电脑和 n−1 根网线形成了一棵树&#xff0c;树是一个特殊的无向图&#xff0c…

el-select 和el-tree二次封装

前言 本文章是本人在开发过程中&#xff0c;遇到使用树形数据&#xff0c;动态单选或多选的需求&#xff0c;element中没有这种组件&#xff0c;故自己封装一个&#xff0c;欢迎多多指教 开发环境&#xff1a;element-UI、vue2 组件效果 单选 多选 组件引用 <treeselec…

C++知识整理day2类与对象(上)——类的定义、实例化、this指针、构造、析构、拷贝构造函数

文章目录 1.类的定义1.1 类定义的格式1.2 访问限定符1.3 类域 2.实例化2.2 对象大小 3.this指针4.类的默认成员函数5.构造函数6. 析构函数7.拷贝构造函数 1.类的定义 1.1 类定义的格式 class为定义类的关键字&#xff0c;Stu为类的名字&#xff0c;{}中为类的主体&#xff0c;…

C++ 编程指南06 - 不要泄漏任何资源

一&#xff1a;概述 资源泄漏是指程序在运行过程中分配了某些资源&#xff08;如内存、文件句柄、网络连接等&#xff09;&#xff0c;但未正确释放或归还&#xff0c;导致这些资源持续占用&#xff0c;无法被其他部分使用。 例如&#xff1a; 动态分配的内存未释放。打开的文…

理解设计模式与 UML 类图:构建稳健软件架构的基石

在软件开发的广阔天地里&#xff0c;设计模式与 UML&#xff08;统一建模语言&#xff09;类图犹如两座灯塔&#xff0c;为开发者照亮前行的道路&#xff0c;指引着我们构建出高质量、可维护且易于扩展的软件系统。今天&#xff0c;就让我们一同深入探索单一职责、开闭原则、简…

SouVR Feedback force7 力反馈设备

Feedback force7力反馈的末端执行器涵盖了人类手部的自然运动范围&#xff0c;设计与双手控制的操作台兼容。 全重力补偿和无漂移校准相结合有助于提高用户的舒适度和准确性&#xff0c;专为对于性能和可靠性至关重要的苛刻应用而设计。 产品的可靠性、可操作性、先进性 独特的…

读写分库分表

主数据库负责写&#xff0c;从数据库负责读&#xff0c;主库和从库间会进行数据同步&#xff0c;以保证库中数据的准确性。 读写分离&#xff08;极客时间Mysql45讲读写分离&#xff09; 如何实现&#xff1f; 步骤&#xff1a; 部署多台数据库&#xff0c;选择其中的一台作…