【Electron】桌面应用开发快速入门到打包Windows应用程序

news/2024/9/18 21:53:00/ 标签: electron, windows, javascript

electron_Windows_0">electron 实现桌面应用开发快速入门到打包Windows应用程序

一、基本介绍

‌‌Electron 是一个使用‌ JavaScript、‌HTML 和‌ CSS 构建桌面应用程序的框架。它通过将‌Chromium和‌Node.js嵌入到其二进制文件中,允许开发者使用JavaScript代码库创建跨平台的桌面应用程序,支持Windows,Mac和Linux等多个操作系统。
详细内容可以在 electron官网 了解

二、环境配置

electron 开发桌面应用,需要提前安装Node.js和npm,然后再安装 electron 以及后续的打包工具。
在整个安装到打包过程中,会发现一系列诡异的报错,这些报错大多都是由node和npm版本问题所致,用cnpm的话,也有一部分原因是由于cnpm镜像所导致,所以建议安装最新版本的node和npm以及cnpm(安装最新版本可以尽量减少诡异问题出现),而且在整个安装过程中需要保持网络畅通,如果网络稳定中途还会出现拉包失败的问题。
总之,刚开始搭建的跑项目还好一些,都会比较顺利,后面的打包确实坑挺多的,遇到一个解决一个吧~

1. 升级 node.js 版本

运行所需要的Node版本是v14.17.0以上,但是建议大家安装或者更新到最新版本

可以在官网安装 node.js官网
或者 nvm 切换版本

2. 升级 npm 版本

javascript">npm install -g npm

3. 升级 cnpm 版本

如果升级了 npm 但是 cnpm -v 版本还没有变化版本还没有任何变化,需要执行以下命令

javascript">cnpm i -g cnpm

4. 安装Electron框架

javascript">cnpm install electron -g

三、快速搭建

1. 初始化项目

创建一个自己的文件夹,如【electrontest】,cmd 打开到此文件夹,中执行以下命令
最好使用 cmd 打开,PowerShell打开往往也会有诡异报错

javascript">npm init

init时根据提示创建package.json文件,也可以一路Enther,后续都可以改,最终得到如下

在这里插入图片描述

2. 设置package.json文件

javascript">{"name": "test","version": "1.0.0","description": "测试项目","main": "index.js","scripts": {"test": "test","start": "electron .","build": "electron-builder --win --x64"},"author": "","license": "ISC","devDependencies": {"electron": "^32.0.1","electron-builder": "^24.13.3"}
}

electronelectronbuilder_61">3. 安装electron和打包工具electron-builder

执行以下命令

javascript">cnpm install electron --save-dev
cnpm install electron-builder --save-dev

4. 创建index.js和index.html文件

index.html文件

javascript"><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Hello World!</title>
</head>
<body><h1>Hello World!</h1><p>开始你的 electron 之旅</p>
</body>
</html>

index.js文件

javascript">const { app, BrowserWindow } = require('electron');function createWindow() {// 创建浏览器窗口const mainWindow = new BrowserWindow({width: 1000,height: 800,webPreferences: {nodeIntegration: true}});// 并加载应用的index.htmlmainWindow.loadFile('index.html');// 打开开发者工具(可选)mainWindow.webContents.openDevTools();
}// Electron将在初始化完成后,准备创建浏览器窗口时调用这个函数
app.whenReady().then(createWindow);// 所有窗口关闭时退出应用
app.on('window-all-closed', () => {// 在macOS上,除非用户用Cmd + Q确实地退出,否则绝大部分应用及其菜单栏会保持激活if (process.platform !== 'darwin') {app.quit();}
});app.on('activate', () => {// 在macOS上,当点击dock图标并且没有其他窗口打开时,通常会在应用中重新创建一个窗口if (BrowserWindow.getAllWindows().length === 0) {createWindow();}
});

electronbuilderyml_125">5. 创建electron-builder.yml文件

打包配置文件,用来配置项目打包的信息,打包后的标题、icon图标以及打包后的路径

javascript">appId: '应用名称'
productName: '安装后显示的标题'
directories:output: './dist'buildResources: 'build'app: './'win:icon: '图标路径'mac:icon: '图标路径'linux:icon: '图标路径'nsis:oneClick: falseallowToChangeInstallationDirectory: true

示例

javascript">appId: 'testId'
productName: 'electron测试项目'
directories:output: './dist'buildResources: 'build'app: './'win:icon: 'icon.png'mac:icon: 'icon.png'linux:icon: 'icon.png'nsis:oneClick: falseallowToChangeInstallationDirectory: true

6. 运行项目

javascript">npm run start

在这里插入图片描述

四、Windows打包

执行以下命令

javascript">npm run build

会生成一个dist文件,打开dist文件会看到打好的exe程序
在这里插入图片描述
整体文件目录如下
在这里插入图片描述

如果在安装和打包的过程中遇到了很多诡异的报错,可以参考以下文章:
【Electron】桌面应用开发electron-builder打包报错问题处理
如果想在应用程序中打开一个链接,可以参考以下文章:
【Electron】桌面应用开发启动直接打开一个网址或者浏览器打开一个网址


http://www.ppmy.cn/news/1516111.html

相关文章

JDK、JRE、JVM之间的关系

三者为包含关系&#xff0c;如下图&#xff1a; JDKjava development kit&#xff08;Java开发工具包&#xff09;JDK JRE java开发工具&#xff08;Java&#xff0c; javac&#xff0c;javadoc&#xff0c;javap等&#xff09;&#xff0c;是用于java开发的最小环境。JREj…

【机器学习】 7. 梯度下降法,随机梯度下降法SGD,Mini-batch SGD

梯度下降法,随机梯度下降法SGD,Mini-batch SGD 梯度下降法凸函数(convex)和非凸函数梯度更新方向选择步长的选择 随机梯度下降SGD(Stochastic Gradient Descent)梯度下降法&#xff1a;SGD: Mini-batch SGD 梯度下降法 从一个随机点开始决定下降方向&#xff08;重要&#xff…

【docker】使用github action来自动发布项目到dockerhub

本文首发于 ❄️慕雪的寒舍 使用github action来自动发布项目到dockerhub。参考 https://msdemt.github.io/p/github-action-build-docker/ 博客 1.准备工作 1.1 dockerhub token https://hub.docker.com/settings/security 登录dockerhub&#xff0c;在用户的account settin…

Ubuntu清除缓存的方法--防止系统崩溃

前情提要&#xff1a;虚拟机出现过好几次的崩溃&#xff0c;终于同事发给了一个可以清除缓存的 1&#xff09;崩溃1&#xff1a;之前将虚拟机放置在某盘中&#xff0c;该盘后续一直有别的东西存入&#xff0c;导致ubuntu直接打不开&#xff0c;后续就将虚拟机直接放在电脑单独…

以简单的例子从头开始建spring boot web多模块项目(五)-thymeleaf引擎

继续向里面加&#xff0c;这次是引入thymeleaf渲染引擎。 使用这个引擎的很多&#xff0c;主要是以下几个优点&#xff1a; Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 -HTML可以在浏览器中正确显…

如何安装和高级 AMP for WP

当 WordPress 是支持 AMP 的 WEB 站点时&#xff0c;主要通过两个插件支持 AMP。 一个是AMP插件。 这个插件也参与谷歌的开发&#xff0c;并被确认为AMP项目的官方插件。 我最初也安装了这个AMP插件&#xff0c;但我不知道是否能够共存的常规网站和AMP兼容网站&#xff0c;很难…

【功能自动化】WebTours实现订票流程并设置检查点

环境搭建&#xff1a; 1.需要配置WebTours网站 代码实现&#xff1a; # 导入包 from selenium import webdriver from selenium.webdriver.support.select import Select from time import sleep# 打开浏览器 driver webdriver.Chrome() driver.get("http://127.0.0.…

Python新手必看!这个模块让Python的重试更加便捷灵活!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 Python重试 📒📝 安装📝 使用📝 进阶使用⚓️ 相关链接 ⚓️📖 介绍 📖 在Python编程中,网络请求、数据库操作或任何可能因外部因素而失败的场景中,错误重试显得尤为重要。它能有效减少因暂时性问题导致的程序崩溃…

java接口 controller层接收list集合传参,postman 调用接口时required parameter XXX is not present

开发过程中开发一个java接口 controller层接收list集合传参&#xff0c;然后postman调用一直不成功&#xff0c;报错 使用RequestParam方式&#xff0c;如果postman 调用接口时报错required parameter XXX is not present 可能是&#xff08;value“items”&#xff09;跟你输…

理解与推导贝叶斯滤波算法

很多时候一些算法看起来极其复杂,极其难懂,不是因为我们愚不可及,而是因为我们看到的是别人省略过很多步骤和脑海中思考过的思路最后呈现出来的公式和文字,而好的博客就应该尽量还原这些思考过程及省略掉的步骤。 像卡尔曼滤波(Kalman filters)、粒子滤波(Particle filt…

七、Centos安装LDAP--Docker版--已失败

参考博客&#xff1a; docker 安装 OpenLDAP 及 LdapAdmin桌面版、页面版(osixia/openldap)_docker安装ldap-CSDN博客 LDAP使用docker安装部署与使用_memberof ldap docker-CSDN博客 目录 一、安装Docker Docker基本使用 管理镜像 二、拉取LDAP镜像 配置docker国内的镜像…

Android笔试面试题AI答之Kotlin常见考点总结

Kotlin面试题主要涵盖了Kotlin语言的基础、特性、高级用法以及与其他编程语言的比较等多个方面。以下是Kotlin常见面试考点的总结&#xff1a; Kotlin基础&#xff1a; 定义与特性&#xff1a;简述Kotlin是什么&#xff0c;以及它的主要特性&#xff0c;如空安全、扩展函数、协…

3.5mm耳机插头制作手机内录线电路图

1.背景 无人直播或录屏直播手机mic会对外界声音的录入&#xff0c;而且很嘈杂。 2.实现功能 手机酷狗播放音频&#xff0c;同时手机内打开录音软件录音&#xff0c;同一台手机操作。 3.电路图 接线分为2种&#xff0c;国标和美标&#xff0c;自己尝试&#xff0c;肯定有一…

OpenCV几何图像变换(5)旋转和缩放计算函数getRotationMatrix2D()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算二维旋转的仿射矩阵。 该函数计算以下矩阵&#xff1a; [ α β ( 1 − α ) ⋅ center.x − β ⋅ center.y − β α β ⋅ center.x ( …

校园供水系统智能管理丨全国大学生数学建模竞赛E题

课程特色 新技术&#xff1a; 新知识、新方法、新技术层出不穷&#xff0c;学习实战专家的课程&#xff0c;让自己持续保持竞争力。 新教学&#xff1a;师傅带练教学模式&#xff0c;全方位在线答疑辅导学习 新思路&#xff1a;培养创新思维和实践能力&#xff0c;…

Github 2024-08-22 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-08-22统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10TypeScript项目1精选Go框架、库和软件列表 创建周期:3700 天开发语言:Go协议类型:MIT LicenseStar数量:127377 个Fork数量:11751 …

安泰功率放大器参数怎么选型号

选择功率放大器的型号是一个重要的决策&#xff0c;特别是在设计电子系统时。不同的应用需要不同类型的功率放大器&#xff0c;因此选型是至关重要的。以下是关于如何选择功率放大器型号的详细文章&#xff0c;包括了相关的参数和考虑因素。 在选择功率放大器型号之前&#xff…

CSS中的Flexbox布局和Grid布局有什么区别?适用场景

CSS中的Flexbox布局和Grid布局是现代Web设计中两种极其重要且强大的布局模型。它们各自解决了不同的布局挑战&#xff0c;提供了前所未有的灵活性和控制力。下面将详细探讨Flexbox和Grid布局的区别以及它们各自适用的场景&#xff0c;以确保理解全面且深入。 Flexbox布局 基本…

贪心算法---跳跃游戏(2)

题目&#xff1a; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到…

【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(十六)

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…