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

Electron 学习笔记

目录

一、安装和启动electron

1. 官网链接

2. 根据文档在控制台输入

3. 打包必填

4. 安装electron开发依赖

5. 在开发的情况下打开应用

6. 修改main为main.js,然后创建main.js

 7.启动

二、启动一个窗口

1. main.js

2. index.html

3. 隐藏菜单栏

三、其他

1. 安全策略

 2. 完善窗口

 四、自动配置重启

1. 安装nodemon

2. 修改package.json命令

3. 配置nodemon.json规则

五、渲染

1. 渲染进程读取主进程中的数据

main.js(主进程)

preload.js

render.js(渲染进程)

 2. 主进程读取渲染进程中发送的数据

render.js

​编辑 main.js

3. 渲染进程读取主进程中获取的数据

preload.js

 redner.js

 main.js

六、应用打包

1. 安装electron-builder

2.配置package.json

3. 执行打包命令


学习视频链接 

禹神:一小时快速上手Electron,前端Electron开发教程_哔哩哔哩_bilibili本套视频带你一小时快速上手Electron,视频内容囊括Electron核心知识:架构模型分析、创建工程、完善窗口行为、多种进程通信、应用打包安装。只要你具备前端和Node基础,学习完这套视频后,完全可以参考官网编写属于自己的桌面应用!, 视频播放量 83624、弹幕量 543、点赞数 2228、投硬币枚数 1555、收藏人数 5277、转发人数 302, 视频作者 尚硅谷, 作者简介 就业规划、简历模板、毕业设计,小谷姐姐秋秋: 3124787958,相关视频:Electron入门到精通(有可能是全站最好的electron课程),《论Electron技术的滥用》,【2024新版】1小时学会ESM规范Electron,前端跨平台桌面应用零基础入门教程,为什么 Electron 的 APP 越来越多了?,Electron教程 Electron+Vue跨平台桌面软件开发教程-2024年更新(大地老师),千锋前端Vue3.0 + Electron快速入门视频教程,基于Vue3.0+Electron 19桌面混合开发项目实战教程,uniapp实现桌面端扫码登陆,跨平台框架比较:Electron vs. Tauri vs. Flutter vs. Qt,Qt 这么强大为什么火不起来?,Tauri和Electron对比,打造高性能桌面应用icon-default.png?t=O83Ahttps://www.bilibili.com/video/av1655887133

一、安装和启动electron

1. 官网链接

快速入门 | Electron本指南将利用 electron/electron-quick-start 引导您完成在 Electron 中创建准系统 Hello World 应用程序的过程。icon-default.png?t=O83Ahttps://www.electronjs.org/zh/docs/latest/tutorial/quick-start

2. 根据文档在控制台输入

npm init

然后一路回车

3. 打包必填

打包时,记得填写作者和描述

4. 安装electron开发依赖

npm install --save-dev electron

也可以输入

npm i -D electron 

 npm install --save-dev electron 和 npm i -D electron 这两个命令在功能上是完全相同的,它们都是用来安装 electron 包作为开发依赖项。

5. 在开发的情况下打开应用

需要在package.json中配置:

注意:后面是有一个小点的

{"scripts": {"start": "electron ."}
}

6. 修改main为main.js,然后创建main.js

 7.启动

npm start

如果不报错,就说明启动成功

二、启动一个窗口

1. main.js

在main.js中根据官网的信息进行填写

这表示启动index.html的窗口

那么我们可以在index.html中编写窗口的内容

2. index.html

然后进行启动,即可显示窗口

3. 隐藏菜单栏

我们会发现有自带的菜单栏

我们不希望显示,则在main.js的BrowseWindow中,添加autoHideMenuBar为true

这样就不显示了 

三、其他

1. 安全策略

在index.html中的meta修改为:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">

 2. 完善窗口

当 Electron 应用程序中所有的窗口都被关闭时,如果应用程序不是运行在 macOS 上,那么应用程序将会完全退出。在 macOS 上,通常即使所有的窗口都被关闭了,应用程序也不会完全退出,而是继续在菜单栏中运行,直到用户显式地选择退出应用程序。这是 macOS 应用程序的一个常见行为,与 Windows 和 Linux 系统不同,在那些系统上,当所有窗口都关闭时,应用程序通常会完全退出。

app.on('window-all-closed', () => {if (process.platform !== 'darwin') app.quit()
})

当 Electron 应用程序准备就绪后,首先创建一个浏览器窗口。此外,如果应用程序被激活(特别是在 macOS 上),并且当前没有打开的窗口,那么将创建一个新的窗口。这样可以确保用户在尝试与应用程序交互时,总有一个窗口可供使用。

app.whenReady().then(() => {createWindow()app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) createWindow()})
})

main.js 

 四、自动配置重启

1. 安装nodemon

npm i -D nodemon

2. 修改package.json命令

  "scripts": {"start": "nodemon --exec electron ."},

3. 配置nodemon.json规则

创建文件夹nodemon.json:

{"ignore": ["node_modules","dist"],"restartable":"r","watch":["*.*"],"ext":"html,js,css"
}

五、渲染

创建render.js

在index.html中引入,render.js相当于index中的js代码

main.js相当于主进程

render.js相当于渲染进程

它们之间的通信需要预加载脚本 prepload.js

我们需要创建prepload.js

1. 渲染进程读取主进程中的数据

main.js(主进程)

注意preload.js就可以读取主进程的值

preload.js

那么preload.js如何传递给渲染进程呢?

例如传递user1变量的值 

render.js(渲染进程)

获取preload中定义的变量传递回来的值

 

 2. 主进程读取渲染进程中发送的数据

preload.js

在此定义了一个发送消息的数据

render.js

在此发送数据

 main.js

接收数据,接收数据自定义进行调用对应的函数

3. 渲染进程读取主进程中获取的数据

preload.js

在此定义getMessage作为双向数据互通的方式

 redner.js

 main.js

六、应用打包

1. 安装electron-builder

npm i -D electron-builder

2.配置package.json

注意这里的 icon  应用的图标需要使用ico后缀的图标

  "build": {"appId": "com.test.app","win": {"icon": "./test.ico","target": [{"target": "nsis","arch": ["x64"]}]},"nsis": {"oneClick": false,"perMachine": true,"allowToChangeInstallationDirectory": true}},

3. 执行打包命令

npm run build

相关文章:

Electron 学习笔记

目录 一、安装和启动electron 1. 官网链接 2. 根据文档在控制台输入 3. 打包必填 4. 安装electron开发依赖 5. 在开发的情况下打开应用 6. 修改main为main.js&#xff0c;然后创建main.js 7.启动 二、启动一个窗口 1. main.js 2. index.html 3. 隐藏菜单栏 三、其他…...

Debian 12 安装配置 fail2ban 保护 SSH 访问

背景介绍 双十一的时候薅羊毛租了台腾讯云的虚机, 是真便宜, 只是没想到才跑了一个月, 系统里面就收集到了巨多的 SSH 恶意登录失败记录. 只能说, 互联网真的是太不安全了. 之前有用过 fail2ban 在 CentOS 7 上面做过防护, 不过那已经是好久好久之前的故事了, 好多方法已经不…...

http反向代理

通过反向代理实现访问biying,目前访问一些网站需要绕过cloudfare还没有解决,代码如下: from fastapi import FastAPI, Request from fastapi.responses import StreamingResponse import httpx import uvicorn import logging# 设置日志 logging.basicConfig(level=logging.…...

java12.24日记

运算符&#xff1a; 算术运算符&#xff1a; 顾名思义进行算数运算的 多为&#xff1a;四则运算&#xff0c;加一个取余 &#xff0c;-&#xff0c;*&#xff0c;/以及 %&#xff08;取余&#xff09; 而外的&#xff1a;自增 以及自减--&#xff0c;对原数进行1或者-1 i…...

vue中proxy代理配置(测试一)

接口地址&#xff1a;http://jsonplaceholder.typicode.com/posts 1、配置一&#xff08;代理没起作用&#xff09; &#xff08;1&#xff09;设置baseURL为http://jsonplaceholder.typicode.com &#xff08;2&#xff09;proxy为 ‘/api’&#xff1a;’ ’ &#xff08;3&a…...

[OpenGL]使用TransformFeedback实现粒子效果

一、简介 本文介绍了如何使用 OpenGL 中的 Transform Feedback 实现粒子效果&#xff0c;最终可以实现下图的效果&#xff1a; 本文的粒子系统实现参考了modern-opengl-tutorial, ogldev-tutorial28 和 粒子系统–喷泉 [OpenGL-Transformfeedback]。 二、使用 TransformFeed…...

GitCode 光引计划投稿 | GoIoT:开源分布式物联网开发平台

GoIoT 是基于Gin 的开源分布式物联网&#xff08;IoT&#xff09;开发平台&#xff0c;用于快速开发&#xff0c;部署物联设备接入项目&#xff0c;是一套涵盖数据生产、数据使用和数据展示的解决方案。 GoIoT 开发平台&#xff0c;它是一个企业级物联网平台解决方案&#xff…...

用 gdbserver 调试 arm-linux 上的 AWTK 应用程序

很多嵌入式 linux 开发者都能熟练的使用 gdb/lldb 调试应用程序&#xff0c;但是还有不少朋友在调试开发板上的程序时&#xff0c;仍然在使用原始的 printf。本文介绍一下使用 gdbserver 通过网络调试开发板上的 AWTK 应用程序的方法&#xff0c;供有需要的朋友参考。 1. 下载 …...

攻防世界web第一题

最近开始学习网络安全的相关知识&#xff0c;开启刷题&#xff0c;当前第一题 题目为攻防世界web新手题 这是题目 翻译&#xff1a;在这个训练挑战中&#xff0c;您将了解 Robots_exclusion_standard。网络爬虫使用 robots.txt 文件来检查是否允许它们对您的网站或仅网站的一部…...

轮播图带详情插件,插件

超级好用的轮播图 介绍访问地址参数介绍使用方法&#xff08;简单使用&#xff0c;参数结构点击链接查看详情&#xff09;图片展示 介绍 video(15) 带有底部物品介绍以及价格的轮播图组件&#xff0c;持续维护&#xff0c;uniApp插件&#xff0c;直接下载填充数据就可以在项目里…...

gesp(三级)(14)洛谷:B4039:[GESP202409 三级] 回文拼接

gesp(三级)(14)洛谷:B4039:[GESP202409 三级] 回文拼接 题目描述 一个字符串是回文串,当且仅当该字符串从前往后读和从后往前读是一样的,例如, aabaa \texttt{aabaa} aabaa 和...

ISO17025最新认证消息

ISO17025认证是国际上广泛认可的实验室管理标准&#xff0c;全称为《检测和校准实验室能力的通用要求》&#xff0c;由国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;IEC&#xff09;联合发布。以下是对ISO17025最新认证消息及相关内容的归纳&#xf…...

ASP.NET Core Web API 控制器

文章目录 一、基类&#xff1a;ControllerBase二、API 控制器类属性三、使用 Get() 方法提供天气预报结果 在深入探讨如何编写自己的 PizzaController 类之前&#xff0c;让我们先看一下 WeatherController 示例中的代码&#xff0c;了解它的工作原理。 在本单元中&#xff0c…...

RAID5原理简介和相关问题

1、RAID5工作原理 2、RAID5单块硬盘的数据连续吗&#xff1f; 3、RAID5单块硬盘存储的是原始数据&#xff0c;还是异或后的数据&#xff1f; 4、RAID5的分块大小 ‌RAID5的分块大小一般选择4KB到64KB之间较为合适‌。选择合适的分块大小主要取决于以下几个考量因素&#xff1…...

Axure RP 8安装(内带安装包)

通过网盘分享的文件&#xff1a;Axure8.0.zip 链接: https://pan.baidu.com/s/195_qy2iiDIcYG4puAudScA 提取码: 6xt8 --来自百度网盘超级会员v1的分享 勾选I Agree 安装完成...

stm32定时器输出比较----驱动步进电机

定时器输出比较理论 OC(Output Compare)输出比较输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前3个通道额外拥有死区生成和互补输出…...

关于鸿蒙架构feature

鸿蒙feature层模块架构 model&#xff1a;定义数据类型&#xff0c;进行接口请求 view&#xff1a;视图层 写UI viewModel&#xff1a;控制层 关于逻辑和请求调用 page页...

【递归,搜索与回溯算法 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(一)

找出所有子集的异或总和再求和 题目解析 算法原理 解法 决策树 这种决策使得每一次递归都是有效的递归&#xff0c;每一个节点都是最终的结果&#xff0c;所以这棵决策树是不用剪枝的&#xff0c;也没有递归出口的&#xff1b; 注意 决策树执行添加元素…...

vue3 如何使用 mounted

vue3 如何使用 mounted 在 Vue 3 中&#xff0c;mounted 生命周期钩子用于当组件被挂载到 DOM 中后执行一些操作。 这个钩子非常适合用来执行那些依赖于 DOM 的初始化工作&#xff0c;比如获取元素的尺寸或者是与第三方的 DOM 有关的库进行交互等。 下面是一个简单的 Vue 3 组…...

PostgreSQL JOIN

PostgreSQL中的JOIN操作是一种用于合并两个或多个表的SQL语句&#xff0c;它允许根据某些条件&#xff08;通常是表之间的外键关系&#xff09;将相关的数据组合在一起。PostgreSQL支持多种类型的JOIN&#xff0c;包括&#xff1a; CROSS JOIN&#xff08;交叉连接&#xff09…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...