Electron 学习笔记

news2024/12/27 2:19:02

目录

一、安装和启动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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2266123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络管理-期末项目(附源码)

环境&#xff1a;网络管理 主机资源监控系统项目搭建 &#xff08;保姆级教程 建议点赞 收藏&#xff09;_搭建网络版信息管理系统-CSDN博客 效果图 下面3个文件的项目目录(python3.8.8的虚拟环境) D:\py_siqintu\myproject5\Scripts\mytest.py D:\py_siqintu\myproject5\Sc…

62.基于SpringBoot + Vue实现的前后端分离-驾校预约学习系统(项目+论文)

项目介绍 伴随着信息技术与互联网技术的不断发展&#xff0c;人们进到了一个新的信息化时代&#xff0c;传统管理技术性没法高效率、容易地管理信息内容。为了实现时代的发展必须&#xff0c;提升管理高效率&#xff0c;各种各样管理管理体系应时而生&#xff0c;各个领域陆续进…

MySQL用表组织数据

用表组织数据 文章目录 用表组织数据一.四种完整性约束二.数值类型2-1三.数值类型2-2四.字符串.日期类型五.设置1.设置主键2.设置标识列3.设置非空4.设置默认值 六.主外键建立后注意事项 一.四种完整性约束 1.域完整性 列 域完整性约束方法:限制数据类型,检查约束,外键约束,默…

iOS开发代码块-OC版

iOS开发代码块-OC版 资源分享资源使用详情Xcode自带代码块自定义代码块 资源分享 自提&#xff1a; 通过网盘分享的文件&#xff1a;CodeSnippets 2.zip 链接: https://pan.baidu.com/s/1Yh8q9PbyeNpuYpasG4IiVg?pwddn1i 提取码: dn1i Xcode中的代码片段默认放在下面的目录中…

基于微信小程序的校园访客登记系统

基于微信小程序的校园访客登记系统 功能列表 用户端功能 注册与登录 &#xff1a;支持用户通过手机号短信验证码注册和登录。个人资料管理 &#xff1a;允许用户编辑和更新个人信息及其密码。站内信消息通知&#xff1a;通知公告。来访预约&#xff1a;提交来访预约支持车牌…

mac启ssh服务用于快速文件传输

x.1 在mac上启SSH服务 方法一&#xff1a;图形交互界面启ssh&#xff08;推荐&#xff09; 通过sharing - advanced - remote login来启动ssh&#xff1b;&#xff08;中文版mac应该是 “系统设置 → 通用 → 共享”里打开“远程登录”来启动&#xff09; 查看自己的用户名和…

Magnet: 基于推送的大规模数据处理Shuffle服务

本文翻译自&#xff1a;《Magnet: Push-based Shuffle Service for Large-scale Data Processing》 摘要 在过去的十年中&#xff0c;Apache Spark 已成为大规模数据处理的流行计算引擎。与其他基于 MapReduce 计算范式的计算引擎一样&#xff0c;随机Shuffle操作&#xff08;即…

面试真题:Integer(128)引发的思考

引言 在 Java 编程语言中&#xff0c;数据类型的使用至关重要。作为一种静态类型语言&#xff0c;Java 提供了丰富的基本数据类型和对应的包装类。其中&#xff0c;Integer 类是 int 类型的包装类&#xff0c;承载着更复杂的功能&#xff0c;如缓存、装箱和拆箱等。掌握 Integ…

Windows脚本清理C盘缓存

方法一&#xff1a;使用power文件.ps1的文件 脚本功能 清理临时文件夹&#xff1a; 当前用户的临时文件夹&#xff08;%Temp%&#xff09;。系统临时文件夹&#xff08;C:\Windows\Temp&#xff09;。 清理 Windows 更新缓存&#xff1a; 删除 Windows 更新下载缓存&#xff0…

Type-c接口

6P Type C 接口座&#xff1a; 仅支持充电 16P 与 12P Type C 接口座&#xff1a; 支持数据传输 Type-c引脚&#xff1a; SUB1,SUB2为辅助通讯引脚&#xff0c;主要用在音视频信号传输中&#xff0c;很多DIY都用不到 CC1、CC2引脚用于连接检测&#xff0c;一般可以不用连接&am…

基于python语音启动电脑应用程序

osk模型进行输入语音转换 txt字典导航程序路径 pyttsx3引擎进行语音打印输出 关键词程序路径 import os import json import queue import sounddevice as sd from vosk import Model, KaldiRecognizer import subprocess import time import pyttsx3 import threading# 初始…

互联网视频云平台EasyDSS无人机推流直播技术如何助力野生动植物保护工作?

在当今社会&#xff0c;随着科技的飞速发展&#xff0c;无人机技术已经广泛应用于各个领域&#xff0c;为我们的生活带来了诸多便利。而在动植物保护工作中&#xff0c;无人机的应用更是为这一领域注入了新的活力。EasyDSS&#xff0c;作为一款集视频处理、分发、存储于一体的综…

垃圾分割数据集labelme格式659张1类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;659 标注数量(json文件个数)&#xff1a;659 标注类别数&#xff1a;1 标注类别名称:["garbage"] 每个类别标注的框数&#…

记我的Springboot2.6.4从集成swagger到springdoc的坎坷路~

项目背景 主要依赖及jdk信息&#xff1a; Springboot&#xff1a;2.6.4 Jdk: 1.8 最近新搭建了一套管理系统&#xff0c;前端部分没有公司的前端团队&#xff0c;自己在github上找了一个star较多使用相对也简单的框架。在这个管理系统搭建好上线之后&#xff0c;给组内的小伙…

NNDL 作业11 LSTM

习题6-4 推导LSTM网络中参数的梯度&#xff0c; 并分析其避免梯度消失的效果 先来推个实例&#xff1a; 看式子中间&#xff0c;上半部分并未有连乘项&#xff0c;而下半部分有到的连乘项&#xff0c;从这可以看出&#xff0c;LSTM能缓解梯度消失&#xff0c;梯度爆炸只是不易…

uniapp使用live-pusher实现模拟人脸识别效果

需求&#xff1a; 1、前端实现模拟用户人脸识别&#xff0c;识别成功后抓取视频流或认证的一张静态图给服务端。 2、服务端调用第三方活体认证接口&#xff0c;验证前端传递的人脸是否存在&#xff0c;把认证结果反馈给前端。 3、前端根据服务端返回的状态&#xff0c;显示在…

MySQL中Performance Schema库的详解(下)

昨天说了关于SQL语句相关的&#xff0c;今天来说说性能相关的&#xff0c;如果没有看过上篇请点传送门https://blog.csdn.net/2301_80479959/article/details/144693574?fromshareblogdetail&sharetypeblogdetail&sharerId144693574&sharereferPC&sharesource…

YOLO11全解析:从原理到实战,全流程体验下一代目标检测

前言 一、模型介绍 二、网络结构 1.主干网络&#xff08;Backbone&#xff09; 2.颈部网络&#xff08;Neck&#xff09; 3.头部网络&#xff08;Head&#xff09; 三、算法改进 1.增强的特征提取 2.优化的效率和速度 3.更高的准确性与更少的参数 4.环境适应性强 5.…

【Qt】了解和HelloWorld

目录 0.用户交互界面风格 Windows下GUI开发方案&#xff1f; 1.Qt简介 1.1 版本Qt5. 1.2搭建Qt开发环境 需要安装3个工具 安装过程 熟悉QtSDK重要工具 2.使用Qt Creator创建项目 2.1代码解释 2.2helloworld 1.图形化方式 2.代码方式 0.用户交互界面风格 1.TUI&…

原点安全再次入选信通院 2024 大数据“星河”案例

近日&#xff0c;中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会&#xff08;CCSA TC601&#xff09;共同组织开展的 2024 大数据“星河&#xff08;Galaxy&#xff09;”案例征集活动结果正式公布。由工银瑞信基金管理有限公司、北京原点数安科技有限公司联…