前端框架 Electron 使用总结

news2025/7/12 14:55:32

目录

一、基础搭建

通过脚手架搭建

1、Electron官方案例搭建环境

2、查看调试

3、菜单的使用

4、图标配置

5、项目打包


web应用相信每位程序员都不陌生,PC端应用可能会底层开发的就不是太多了,下面的这套技术栈就是为前端程序员快速一键搭建windows、Linux、Mac的PC端应用而生的,只要会React实现Web开发即可。Electron使用很广泛,VScode编辑器就是Electron框架做的。

electron官方文档:

简介 | Electron

一、基础搭建

通过脚手架搭建

Electron脚手架 - ElectronForge使用文档_wanzheng_96的博客-CSDN博客

1、Electron官方案例搭建环境

快速入门 | Electron

这里搭建到这一步后见我的代码:

 此时我们的项目结构:

 main.js代码如下:

const { app, BrowserWindow } = require('electron')

app.on("ready",()=>{
    const mainWindow = new BrowserWindow({
        width: 500,
        height: 500
    })
    
    mainWindow.loadFile('./src/index.html').then()
})

运行项目:

npm run start

弹出小窗口:

 第一个案例运行成功!

但此时是没有热更新的功能的,每次修改完代码,我们都需要重启,所以这里添加一个热更新依赖:

yarn add --dev electron-reloader

main.js修改如下:

const { app, BrowserWindow } = require('electron')

//热加载
const reLoader=require("electron-reloader")
reLoader(module)

//监听初始化完成的生命周期
app.on("ready",()=>{
    const mainWindow = new BrowserWindow({
        width: 700,
        height: 700
    })
    
    mainWindow.loadFile('./src/index.html').then()
})

这样便有热更新功能了。

2、查看调试

可以通过ctl+shift+i查看控制台

3、菜单的使用

参考文档:Menu | Electron

在main.js同级目录下创建menu.js用于存放menu数据,menu.js代码如下:

const { BrowserWindow, Menu } = require("electron")
//定义菜单模板
const template = [
    {
        label: "文件",
        submenu: [
            {
                label: "新建窗口",
                click () {
                    new BrowserWindow({
                        width: 500,
                        height: 500
                    })
                }
            }
        ]
    },
    {
        label: "关于我们"
    }
]

const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)

再到main.js里引入,引入后代码如下:

const { app, BrowserWindow } = require("electron")

//热加载
const reLoader = require("electron-reloader")
reLoader(module)

//监听初始化完成的生命周期
app.on("ready", () => {
    const mainWindow = new BrowserWindow({
        width: 700,
        height: 700
    })
    
    mainWindow.loadFile("./src/index.html").then()
})

require("./menu.js")

 效果:点击文件->新建后有新窗口弹出

自定义菜单

效果:可以看到此时并无边框

 自定义的菜单只需要通过html等写到对应的页面中即可!

4、图标配置

5、项目打包

方案一:electron forge打包,官方推荐

Electron教程(三)如何打包 electron 程序:electron-forge 的使用教程_十月ooOO的博客-CSDN博客

方案二: windows打包

应用打包

这里我们使用electron-packager来进行打包。全局方式下下载安装:

npm install -g electron-packager

在项目根目录执行以下打包命令:

electron-packager . HelloWorld --win --out ../HelloWorldApp --arch=x64

这里,我们声明项目名称为HelloWorld, 仅打包到Windows 64位平台,打包输出文件为根目录上一级的HelloWorldApp目录。执行后将会输出:

Packaging app for platform win32 x64 using electron v9.0.3
Wrote new app to ..\HelloWorldApp\HelloWorld-win32-x64

我们在..\HelloWorldApp\HelloWorld-win32-x64 目录下会发现出现了以下文件:

双击HelloWorld.exe即可运行我们的应用。

因为每次打包都要输入那么长串命令,效率特低,没有一种编程愉悦感,我们可以将打包命名写在 package.json 文件里。在scripts配置部分加入以下配置:

"package": "electron-packager . HelloWorld --win --out ../HelloWorldApp --arch=x64"

然后执行以下命令进行打包:

npm run-script package

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

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

相关文章

Linux学习——网络编程基础及TCP服务器

目录 一、网络采用分层的思想: 二、各层典型的协议: 三、网络的封包和拆包: 四、网络编程的预备知识 4.1.SOCKET 4.2 IP地址 4.3 端口号 4.4 字节序 五、TCP编程API TCP协议分成了两个不同的协议:可靠传输:用来检测网络…

读书笔记-学习GNU Emacs-3终篇

学习本书目的: emacs的学习一直是陆陆续续看博客和上手实践,这次想通过阅读"学习GNU Emacs"这本书好好系统的再复习下emacs。 yps:读技术书应该是带着一定的目的去读的,最简单的目的可能就是为了学好某一项技术或者复习下某一项技…

[附源码]java毕业设计社区健康服务平台管理系统lunwen

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

IDEA利用maven建立javaWeb项目(IDEA 2021.3.3)

1、在Idea中配置maven (1)、打开Idea,点击File,然后点击Settings,进入设置,或者直接按CtrlAltS进入设置 (2)、先在左上角的搜索框输入maven,找到maven后单击,然后在右边的maven home path的右边选择你的m…

置信度--学习笔记

置信区间是衡量测量精度的一个指标,也能显示出估算有多稳定,也就是说如果重复做某项实验,得到的结果与最初的估计有多接近。步骤: 确定要测试的情况:如“A大学男生的平均体重是80公斤”,则后续就是要测试在…

最新最全面的Spring详解(三)——Resources,验证、数据绑定和类型转换与Spring表达式语言(SpEL)

前言 本文为 【Spring】Resources与Spring表达式语言(SpEL) 等相关知识,下边将对Resources(包含:Resource接口、内置的 Resource的实现、ResourceLoader接口、应用环境和资源路径),验证、数据绑…

浅谈化工生产制造企业软件系统的选择

现在大家都在讨论全球COVID流行和经济衰退对企业的影响,以及一个有作为的企业,在当下的环境下如何求生存和谋发展的问题。“埃森哲的一份报告发现,99%的首席运营官都认为,使用实时数据运营对于应对Covid或经济衰退威胁等至关重要。…

Java的JDBC编程

1. 数据库编程的必备条件 编程语言,如Java,C、C、Python等数据库,如Oracle,MySQL,SQL Server等数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如&#xf…

Telnet SMTP协议关于“535 Error: authentication failed“解决思路

计算机网络中应用层的SMTP(Simple Mail Transfer Protocol)协议可用来发送邮件,在Telnet使用SMTP登陆账号密码时出现“535 Error: authentication failed”问题。现记录解决步骤。 1. 确认在邮箱中已开启SMTP服务。 2. 按照扫码流程,获得授权密码&…

第六章第二节:图的遍历(广度优先遍历和深度优先遍历)和应用(最小生成树、最短路径、有向无环图的描述表达式、拓扑排序、关键路径)

文章目录1. 图的遍历1.1 广度优先搜索(BFS)1.1.1 遍历序列的可变性1.1.2 复杂度的分析1.1.3 广度优先生成树1..1.4 广度优先生成森林1.2 深度优先搜索(DFS)1.2.1 树的深度优先遍历1.2.2 图的深度优先遍历1.2.2 复杂度的分析1.2.4 …

Servlet | 域对象、request对象其它常用的方法

目录 一:域对象 1、应用域对象 2、请求域对象 二:request对象其它常用的方法 一:域对象 1、应用域对象 (1)应用域对象是什么? ServletContext (Servlet上下文对象。) 什么情况…

NCV7705DQAR2G 汽车电机驱动器(NCV7705DQR2G)引脚配置

型号:NCV7705DQAR2G NCV7705DQR2G 封装:36-BFSOP 类型:电机驱动器,控制器 NCV7705/NCV7705(A)是一款功能强大的汽车车身控制系统驱动IC。该集成电路设计用于控制车辆前门的多个负载。单片集成电路可以控制镜面定位、加热、折叠等…

JS测试出最小支持字体,以及修复PDFJS的文本错误偏移

PDFJS的文本层有时会有一个错误的整体偏移,导致文本处于错误位置,导致用户选择错误的文本。 为什么会这样呢?其一,如果浏览器的文本缩放不是100%,而PDFJS没有检测这一点,导致文本排布发生偏移。安卓可以通…

[附源码]java毕业设计人口老龄化社区服务与管理平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

一个Adapter+recycleview实现多种布局,区分布局中

文章目录🍓🍓简述🍓🍓效果图🍓🍓代码🥭🥭AllAdapter.java🥭🥭 FuritAdapter3.java🥭🥭MainActivity.java(主函数)🥭&#…

适合中小企业的CRM客户关系管理系统?

1、CRM如果体量30人及下列 这类民营企业的特征是没营业网点,分散办公设备,一职多能,没他们的IT控制技术职责部门。通常老板重大决策,子公司全体相关人员采用。 主要就采用目地是管理组织工作顾客档案,历史记录顾客数…

力扣138 - 复制带随机指针的链表【复杂链表的终极试炼】

想指☞哪就指哪儿~一、题目描述二、思路分析与罗列思路一:通过原链表的【random】去找控制拷贝链表的【random】思路二:直接链接到原链表处做相邻结点的【random】修改Step1:把复制的结点插入到原结点后Step2:设置拷贝结点的rando…

计算机毕业设计ssm+vue+elementUI基于html的戒烟网站

项目介绍 大量研究证据表明,戒烟可降低或消除吸烟导致的健康危害。任何人在任何年龄戒烟均可获益,且戒烟越早、持续时间越长,健康获益就越大。随着时代发展人们对健康也越来越重视,更多的人参与到了戒烟的行列中来,本…

React环境搭建

目录 1.React环境搭建 2.React项目结构 3.React优点和缺点 1.声明式设计 2.高效-React通过对DOM的模拟(创建虚拟DOM),最大限度地减少DOM操作(底层是Diff算法) 3.单向响应的数据流 4.组件化开发-复用和便于维护 5.缺点:React本身能做的事并不多&am…

手机实时预览vscode写的html页面

一、vscode安装Live Server插件 扩展(CtrlShiftX)搜索Live Server进行安装 二、设置电脑IP (1)winR 打开终端输入:ipconfig (2)找到SDN 服务器 (3)设置IPv4窗口 高级…