「Electron|快速开始」来写个Hello World桌面应用吧

news2024/11/24 7:18:06

本文主要介绍如何快速使用Electron生成一个Hello World应用

文章目录

  • 主要步骤
  • 一、准备工作
    • 创建项目
    • 安装electron
  • 二、编写electron应用所需的基本内容
    • 首先,我们需要给electron应用一个入口
    • 创建窗口
    • 往窗口里面放一个HTML界面,写上"Hello World!"

主要步骤

  • 创建项目目录
  • 初始化项目信息
  • 安装electron
  • 创建electron应用最小所需文件
  • 运行并验证

一、准备工作

创建项目

我们需要创建一个目录作为electron项目的根目录,以下命令创建一个名为hello-electron-app的目录并进入该目录中:

  • mkdir hello-electron-app && cd hello-electron-app

然后我们运行下面的命令并且一路回车完成初始化项目环境的工作:

  • npm init

完成之后我们可以看到目录下生成的package.json内容大致如下:

{
  "name": "hello-electron-app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

安装electron

运行以下命令安装electron:
npm install --save-dev electron
如果安装过程遇到报错,可以参考这篇文章

二、编写electron应用所需的基本内容

如果我们这时就运行electron启动命令npm start,则会出现找不到start指令(npm ERR! Missing script: "start")的错误。这是因为在存储项目信息的package.json里面没有编写start对应的命令,需要在package.json中增加如下信息:

{
  ......
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron ."
  },
  ......
}

这时我们再执行npm start就会提示新的错误了(●ˇ∀ˇ●)
在这里插入图片描述
这是因为我们项目目录空空如也,还没有electron的入口文件可以运行。

首先,我们需要给electron应用一个入口

  • 创建一个作为入口的js文件,文件名称可以自取,这里直接叫做main.js
  • main.js文件中可以暂时不填写任何代码内容

由于项目初始化生成package.json时,默认的入口文件名称叫做index.js,所以我们要将package.json中的main字段内容修改如下:

{
  ......
  "main": "main.js",
  ......
}

这时候再运行就不会报错了。虽然没有任何应用窗口出现,但是命令行输出如下:

> hello-electron-app@1.0.0 start
> electron .

创建窗口

我们在main.js先引入electron控制应用的模块appBrowserWindow,其中:

  • app模块用来控制应用
  • BrowserWindow模块用来控制应用中的浏览器窗口

加入以下代码,表示在应用启动完毕时运行一段代码:

// main.js

app.whenReady().then(() => {
    // do something
  })

然后我们编写一段创建宽800高600的窗口的代码并进行调用,如下:

const { app, BrowserWindow } = require('electron')
const createWindow = () => {
    const win = new BrowserWindow({
      width: 800,
      height: 600
    })
}
  

app.whenReady().then(() => {
    createWindow()
  })

再次运行npm start就可以看到有应用窗口出现:
在这里插入图片描述

往窗口里面放一个HTML界面,写上"Hello World!"

我们创建一个HTML文件index.html(名称任意)
然后放入VSCode生成的HTML基础模板(打一个感叹号!就会弹出代码片段提示):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>

body部分加上 <h1>Hello World!</h1>

然后我们需要在窗口加载这个HTML文件,在main.jscreateWindow添加加载页面的逻辑,修改后完整代码如下:

const { app, BrowserWindow } = require('electron')
const createWindow = () => {
    const win = new BrowserWindow({
      width: 800,
      height: 600
    })

    win.loadFile("index.html")
}
  

app.whenReady().then(() => {
    createWindow()
  })

现在我们再次运行npm start,就可以看到hello world了!
在这里插入图片描述

你学会了吗?(●ˇ∀ˇ●)

如果对你有帮助,就点个赞吧~👇

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

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

相关文章

计算机网络技术-常见网络命令

文档下载&#xff1a;https://download.csdn.net/download/weixin_57836618/87294136 实验2 常见网络命令 1. 实验目的与意义 ① 通过实验熟悉与网络相关的组件的含义和用途。 ② 了解系统网络命令的含义、用途和操作方法。 ③ 能够查看网络的状态&#xff0c;对网络进行简…

DEiT实战:使用DEiT实现图像分类任务(一)

DEiT实战摘要安装包安装timm数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集摘要 DEiT是FaceBook在2020年提出的一篇Transformer模型。该模型解决了Transformer难以训练的问题&#xff0c;三天内使用4块GPU&#xff0c;完成了ImageNet的训练&#xff0c;并且没有使用…

mPEG-N3;mPEG-Azide;甲氧基聚乙二醇叠氮CAS:89485-61-0

叠氮化物/叠氮基官能化的甲氧基聚乙二醇&#xff08;mPEG-N3&#xff09;是一种单官能PEG衍生物&#xff0c;可用于修饰蛋白质&#xff0c;肽和其他材料。 叠氮化物基团可以在铜催化的水溶液中与炔烃反应。 也可以容易地还原成胺基。 名称 甲氧基聚乙二醇叠氮 mPEG-N3 别称 甲…

周志华 《机器学习初步》模型评估与选择

周志华 《机器学习初步》模型评估与选择 Datawhale2022年12月组队学习 ✌ 文章目录周志华 《机器学习初步》模型评估与选择一.泛化能力二.过拟合和欠拟合泛化误差 VS 经验误差过拟合 VS 欠拟合三.模型选择的三大问题如何获得测试结果&#xff1a;评估方法如何评估性能优劣&…

工厂设备管理中经常会遇到哪些问题?

我调查过上百家企业的设备管理问题&#xff0c;发现大家认为所有设备管理问题中&#xff0c;最典型的问题主要包括以下五个方面&#xff1a; 1&#xff09;领导不重视管理 “生产量是最重要的”、“销售额是最重要”、“重ERP&#xff0c;轻现场管理”……等管理理念是企业中的…

镜像法的理解——工程电磁场 P9

模型一&#xff1a;无限大导体平面 此处有几点理解需要格外谈一下 1. 只有在有电力线的地方&#xff0c;才会产生电场的作用 2.对于下平面的分析&#xff0c;下平面如果存在电荷的话&#xff0c;必然存在电力线&#xff0c;那么从无穷远处做功到此处&#xff0c;必然会存在电…

Java网络多线程——UDP编程

UDP编程通信 基本介绍 类DatagramSocket和DatagramPacket【数据包/数据报】实现了基于UDP协议网络程序。UDP数据报通过数据报套接字DatagramSocket发送和接收&#xff0c;系统不保证UDP数据报一定能安全送到目的地&#xff0c;也不确信什么时候可以抵达。DatagramPacket对象封…

从「堆叠」到「降本」,智能汽车传感器颠覆性革命即将到来!

随着汽车智能化的演进&#xff0c;传感器的堆叠造成了整车成本的急剧上升。尤其是多传感器融合&#xff08;摄像头、毫米波雷达和激光雷达&#xff09;技术作为当下的主流趋势之一&#xff0c;焦点依然回到成本层面。 同时&#xff0c;传统的整车电子架构和计算能力的限制&…

Flutter 小技巧之快速理解手势逻辑

又到了小技巧系列更新时间&#xff0c;今天我们主要分享 Flutter 里的手势触摸逻辑&#xff0c;其实在很久之前我就写过 《面深入触摸和滑动原理》相关的源码分析文章&#xff0c;但是最近有人说源码分析看不懂&#xff0c;有没有简要好理解的&#xff0c;那么本篇就用更简单的…

[附源码]Node.js计算机毕业设计高校图书馆网站Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

高通平台 5G RF调试总结

目录&#xff1a; 1.QRCT4的使用 2.RFC配置 3.5G CA 配置概括 4.RFPD 运行及错误分析 5.CA吞吐率问题分析 最新的5G HImalyaa平台RFC的配置方法和之前的平台发生了根本性的变化&#xff0c;主要体现在使用QRCT4工具来配置RFC XML文件&#xff0c;然后根据XML文件编译生成s…

MobileNetV3原理说明及实践落地

本文参考&#xff1a; pytorch实现并训练MobileNetV3 - 灰信网&#xff08;软件开发博客聚合&#xff09; 【神经网络】(16) MobileNetV3 代码复现&#xff0c;网络解析&#xff0c;附Tensorflow完整代码 - 代码天地 1 MobileNetV3与V1、V2对比 &#xff08;1&#xff09;Mob…

【LeetCode每日一题:1945. 字符串转化后的各位数字之和~~~模拟】

题目描述 给你一个由小写字母组成的字符串 s &#xff0c;以及一个整数 k 。 首先&#xff0c;用字母在字母表中的位置替换该字母&#xff0c;将 s 转化 为一个整数&#xff08;也就是&#xff0c;‘a’ 用 1 替换&#xff0c;‘b’ 用 2 替换&#xff0c;… ‘z’ 用 26 替换…

匿名浏览器是什么?为什么联盟营销需要借助匿名浏览器?

这段时间小伙伴们都对联盟营销很感兴趣&#xff0c;东哥也是陆陆续续出了两三篇相关的科普文章&#xff0c;今天继续给大家介绍匿名浏览器在联盟营销上的帮助&#xff0c;毕竟互联网时代&#xff0c;学会如何借助工具高效工作是很重要的。关于联盟营销的概念科普文章大家可以看…

学不会的python之通过某几个关键字排序、分组一个字典列表(列表中嵌套字典)

通过某个关键字排序、分组一个字典列表排序问题描述解决方案1.operator 模块的 itemgetter 函数2.lambda 表达式引申分组问题描述解决方案1.itertools.groupby() 函数2.defaultdict() 构建多值字典排序 问题描述 现在你有一个字典列表(列表中嵌套字典)&#xff0c;你想要根据…

web 向 unity 传输文件流 blob 记录

场景&#xff1a;web 与unity 通信&#xff0c;向 unity 传输文件 二进制流。 由 unity 转换并下载文件。 流程&#xff1a; web 端将缓存的 blob 数据流读取为 base64 编码的数据 → 传给 unity, →unity 解码转换 base64 数据并下载。 web 端&#xff1a; 1、 将数据转换成…

【Axure教程】自定义审批流原型模板

审批流即审批流程&#xff0c;是对某项工作的审批活动的一系列有序组合。审批流在业务系统中担当者非常重要的角色&#xff0c;所以今天作者就教大家制作一个通用的自定也审批流的原型模板&#xff0c;方便大家日后的工作。 一、效果展示 1、可以根据业务需要添加多个审批节点…

QT学习笔记(中)

QT学习笔记&#xff08;中&#xff09; 文章目录QT学习笔记&#xff08;中&#xff09;P21 消息对话框P22 其他标准对话框P23 登录窗口界面和布局P24 控件 按钮组P25 QListWidget控件P26 QTreeWidget控件的使用P27 tableWidgetP28 其他常用控件介绍P30 自定义控件P31 QEventP32…

PyQt5 QtChart-折线图

PyQt5 QtChart-QLineSeries 折线图QLineSeriesQLineSeries QLineSeries类将数据序列显示为折线图&#xff0c;其核心代码&#xff1a; lineSeries QLineSeries() lineSeries.append(1, 3) lineSeries.append(5, 8) … chart.addSeries(lineSeries) 常用方法&#xff1a; set…

【linux】容器之代码自动发布-docker

一、分析 旧&#xff1a; 代码发布环境提前准备&#xff0c;以主机为颗粒度静态 新&#xff1a; 代码发布环境 多套&#xff0c;以容器为颗粒度编译 二、业务发布逻辑设计图 三、工具使用流程图 工具 gitgitlabjenkinstomcatmavenharbordocker 流程图 四、主机规划 五…