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

【Electron】electron+react的插件@electron/remote用法,在渲染进程直接调用主进程的API

目录

    • 1、首先安装使用
    • 2、再进行初始化
    • 3、在渲染进程中使用

electron的remote是一个electron模块,它将JavaScript对象从主进程桥接到渲染进程,是在electron 14.0.0版本之前使用!!!在electron 14.0.0以后,remote这个模块已经被废弃;后续的版本官方建议直接去使用主进程和渲染进程之间的IPC通信来实现 【感兴趣的可以点击这一篇查看IPC通信的使用】

1、首先安装使用

yarn add --save @electron/remote 
或者是
npm install --save @electron/remote

在这里插入图片描述
我这个是在一个空的文件夹下安装的,方便从外网迁移到内网的项目中,可以把remote相关的直接迁移到你的内网进行使用【因为我内网没办法进行直接安装】;

2、再进行初始化

@electron/remote/main必须在主进程中初始化,然后才可以在渲染进程中直接使用

// 也就是我们在主进程那种进行初始化
require('@electron/remote/main').initialize()

如图所示,这是我在主进程中添加的:
这里要把contextIsolation:改为false,允许在渲染进程使用Node【但是有安全风险】
在这里插入图片描述

3、在渲染进程中使用

const { BrowserWindow } = window.require(‘@electron/remote’);
或者引入其他的
以下是我在开发过程中的使用方式,我要使用electron的shell 去 实现一个打开文件;

import React from 'react';
const { app, shell } = window.require('@electron/remote');
const path = window.require('path');
const fs = window.require('fs');const UserManualButton = () => {const handleUserManual = () => {// 获取系统下载目录并拼接路径const downloadsPath = app.getPath('downloads');const manualPath = path.join(downloadsPath, 'New', 'testFile.pdf');// 检查文件是否存在if (fs.existsSync(manualPath)) {shell.openPath(manualPath).then(() => console.log('文件打开成功')).catch(err => console.error('打开失败:', err));} else {console.error('文件不存在:', manualPath);}};return (<button onClick={handleUserManual}>打开用户手册</button>);
};export default UserManualButton;

但是在这里会有安全风险:contextIsolation: false 会降低应用安全性,因为渲染进程可以直接访问 Node.js API
后续在大于electron 14版本就用到刚刚上方提到的IPC通信,并且为什么@electron/remote被废弃

electron官网

以上就是一个简单的使用了

相关文章:

  • 码蹄集:MT2045斐波那契,但是是字符串
  • Java设计模式->责任链模式的介绍
  • Java 编程之备忘录模式
  • SQL学习笔记3
  • LeetCode--37.解数独
  • 使用 Nordic Connect SDK (NCS) 而不是标准 Zephyr 的优势是什么
  • AI+时代已至|AI人才到底该如何培育?
  • ubuntu部署woodpecker依赖gitea
  • 6月26日星期四今日早报简报微语报早读
  • [论文阅读]RaFe: Ranking Feedback Improves Query Rewriting for RAG
  • GraphQL注入 -- GPN CTF 2025 Real Christmas
  • 通过对 NIDS 自适应黑盒对抗性攻击披露漏洞
  • 攻防世界-MISC-4-2
  • 力扣网C语言编程题:搜索插入位置
  • Python 数据分析与可视化 Day 8 - Pandas 高级操作技巧
  • 表单数据收集实现分析
  • Python 中 `bytes` 与 `str` 的核心差异及注意事项
  • python中学物理实验模拟:斜面受力分析
  • IDEA + Spring Boot + javadoc 实例应用
  • Java底层原理:深入理解JVM性能调优与监控