第五节 Electron 模块介绍 remote模块详细介绍

2024-03-15 11:20

本文主要是介绍第五节 Electron 模块介绍 remote模块详细介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 系列文章目录

第一节 electron 介绍

第二节 创建electron项目并启动

第三节 Electron运行流程 、 主进程渲染进程并使用nodejs

第四节 Electron 调用H5事件结合node模块fs 实现文件拖拽读取

目录

 系列文章   目录

前言

实现方法

一、环境及页面搭建

二、重点来了 remote模块的安装及使用

1.安装

2.主进程里配置启用remote模块

3.渲染进程获取页面button并绑定事件

4、项目结构及完整代码 (html参考上面)

总结


前言

electron模块分为主进程模块和渲染进程模块,其中很多模块既可以在主进程中使用也可以在渲染进程中使用比如sell、nativeImage。有很多功能可以使用H5的Api及node模块就可以实现,但顶部菜单及底部托盘只能用electron模块可以修改等,electron提供了很多模块。

本节案例:在渲染进程中点击按钮调用主进程的BrowserWindow打开一个新的窗口。

实现方法

  1. 利用渲染进程的ipcRenderer给主进程发送信息让主进程调用BrowserWindow
  2. 利用remote模块实现(以下使用这个方法)

使用注意事项:Electron10.x 之前可以直接使用 Remote 模块,Electron10.x 以后 Electron14.x 以前要 使用 remote 模块的话必须得在 BrowserWindow 中通过 enableRemoteModule: true 开启, Electron14.x 以后官方把内置的 remote 挪到了第三方模块里面,下面我们给大家看看如何在 Electron 最新版本中使用@electron/remote 模块

说明:我现在的electron版本是19.0.6

一、环境及页面搭建

index.html:

<!DOCTYPE html>
<html lang="en"><head><title></title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script src="./renderer/renderer.js"></script><style></style>
</head><body><button id="openNewWindow">打开新窗口</button>
</body></html>

second.html

<!DOCTYPE html>
<html lang="en"><head><title></title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script src="./renderer/renderer.js"></script><style>div{color: red; text-align: center;}</style>
</head><body><div>我是第二个页面</div>
</body></html>

二、重点来了 remote模块的安装及使用

1.安装

在index.html renderer.js编写代码

2.主进程里配置启用remote模块

  1. 主进程引入
    const remote = require("@electron/remote/main");  // 1>引入
    
  2. 主进程初始化
    remote.initialize()  // 2>初始化
  3. 主进程启用
    remote.enable(mainWindow.webContents)  //3>启用remote
  4. 渲染进程引入BrowserWindow
    const { BrowserWindow } = require("@electron/remote")
    

3.渲染进程获取页面button并绑定事件

window.onload = ()=>{var btnDom = document.querySelector("#openNewWindow")btnDom.onclick = function(){const secWindow = new BrowserWindow({width: 300,height: 200,});secWindow.loadFile(path.join(__dirname, "second.html"))}
}

4、项目结构及完整代码 (html参考上面)

 renderer.js

const {BrowserWindow} = require("@electron/remote")
const path = require("path");window.onload = ()=>{var btnDom = document.querySelector("#openNewWindow")btnDom.onclick = function(){const secWindow = new BrowserWindow({width: 300,height: 200,});secWindow.loadFile(path.join(__dirname, "second.html"))}
}

main.js

const { app, BrowserWindow } = require("electron");
const path = require("path");
const remote = require("@electron/remote/main");  // 1>引入
remote.initialize()  // 2>初始化const createWindow = () => {const mainWindow = new BrowserWindow({width: 1000,height: 800,webPreferences:{// preload:path.join(__dirname,"renderer/preload.js")// 渲染进程使用node模块nodeIntegration:true, // 允许渲染进程使用nodejscontextIsolation:false, // 允许渲染进程使用nodejs},});// 打开调试模式mainWindow.webContents.openDevTools();mainWindow.loadFile(path.join(__dirname, "index.html")); // 渲染进程remote.enable(mainWindow.webContents)  //3>启用remote
};
// 监听应用的启动事件
app.on("ready", createWindow);
//监听窗口关闭的事件,关闭的时候退出应用,macOs 需要排除
app.on("window-all-closed", () => {if (process.platform !== "darwin") {app.quit();}
});
//Macos 中点击 dock 中的应用图标的时候重新创建窗口
app.on("activate", () => {if (BrowserWindow.getAllWindows().length === 0) {createWindow();}
});

总结

以上就是今天要讲的内容,主要思路就是利用remote模块调用主进程模块。

每天记录一点,助力成长!

欢迎大家来浏览我的博客,如发现我有写错的地方,欢迎交流指正。

如果你觉得本文对你有帮助,欢迎点赞收藏转载,烦请注明出处,谢谢! 

这篇关于第五节 Electron 模块介绍 remote模块详细介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811808

相关文章

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

如何在Java Spring实现异步执行(详细篇)

《如何在JavaSpring实现异步执行(详细篇)》Spring框架通过@Async、Executor等实现异步执行,提升系统性能与响应速度,支持自定义线程池管理并发,本文给大家介绍如何在Sprin... 目录前言1. 使用 @Async 实现异步执行1.1 启用异步执行支持1.2 创建异步方法1.3 调用

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1