第五节 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进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

使用SpringBoot创建一个RESTful API的详细步骤

《使用SpringBoot创建一个RESTfulAPI的详细步骤》使用Java的SpringBoot创建RESTfulAPI可以满足多种开发场景,它提供了快速开发、易于配置、可扩展、可维护的优点,尤... 目录一、创建 Spring Boot 项目二、创建控制器类(Controller Class)三、运行

springboot整合gateway的详细过程

《springboot整合gateway的详细过程》本文介绍了如何配置和使用SpringCloudGateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要... 目录1. 添加依赖2. 配置网关路由3. 启用Eureka客户端(可选)4. 创建主应用类5. 自定

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to