1.Electron初始与安装

news2024/11/28 2:28:28

这里写目录标题

    • 一、前言
    • 二、下载
    • 三、简要总结

一、前言

原文以及该系列后续文章请参考:安装Electron

随着前端的不断强盛,现在的前端已经不再满足于网页开发了,而是在尝试能否使用前端的开发逻辑来开发PC端的桌面软件。

即用html、js、css这三者来开发桌面软件。

本栏目所介绍的Electron框架就是这众多实践中目前成效最好的一个。

就连家喻户晓的QQ,目前也已经采用了这套框架重写。

其优点就在于:你只需要写一份代码,就能直接在linux、windows、mac这三个主流的操作系统上运行。

这可以极大减少程序员的工作量。

但缺点也是有的,那就是它底层采用的Chrome内核,简单直白的来说就是,你用Electron开发出来的一个软件,就相当于一个浏览器。

因此它的内存占用量、启动速度等等,相比于原生平台开发的软件都会差很多。

但总的来说,依旧是瑕不掩瑜,毕竟如今个人电脑运行速度越来越快,内存越来越大,只要优化的好,这些缺点都不会是问题。

比如著名的vscode就非常的强大!而它就是依靠Electron框架开发、不断优化而来的。

二、下载

其官网教程可以点击这里跳转。

简单来说就是,你要想使用这套框架,你就得先安装Node.js,安装方法其实也很简单,前往官网下载安装即可:Node.js

一般下载长期支持版本:

image-20240213151241424

从上图中的英文说明中也能看出它的作用,它是一个开源跨平台JavaScript的运行时环境。

更简单直白的来说,它就相当于一个没有窗口的浏览器,只不过比浏览器更强大,它可以让你使用js代码操作本地数据。

而在浏览器中,js代码只能用来控制html标签、或者收发网络请求等等操作。

下载安装完成之后,来到控制台,输入node -v,如果能打印出版本号,就说明你已经安装成功了。

image-20240213151433743

打印不出来,可以尝试重启一下电脑。

有了这个,下面我们就可以安装Electron框架了,按照官方文档的指示,你需要先创建一个文件夹,然后用npm初始化这个文件夹:

mkdir my-electron-app && cd my-electron-app
npm init

mkdircd都是cmd命令,前者用于创建文件夹,后者用于进入这个文件夹,中间的&&用于两个命令分隔,为的意思。

也就是只有前者执行成功后,后面这个命令才会执行。

因此上面的my-electron-app只是一个文件夹的名称,可以自己随便取。

然后用npm init来初始化这个文件夹。

npm是你安装node时自带的一个包管理器,以后你下载其它第三方包,都可以用它来下载,这里的初始化,其实也就是在初始化一个包管理文件。

运行了它之后,会出现一系列让你选择的东西,可以直接一直按Enter即可,全部默认,然后这个文件中就会出现一个叫做package.json的文件。

这个文件就是npm的包管理文件,

image-20240213152046445

刚才在命令行让你填的内容,最终也会保存到这个文件中的,所以你可以直接修改这个文件即可。

上面的字段中:

  • name:这个项目的名字(一般我们称开发一个软件的工程为项目),默认取的当前文件夹的名称(我取的就是test-ele

  • version:版本号

  • description:描述信息,也就是这个软件是干嘛的,自己随便填

  • main:这个就比较重要了,这是这个项目的入口文件,也就是代码将从哪个文件开始执行?其默认是index.js

  • scripts:这个也比较重要,脚本执行的,比如上图中test对应的后面一长串的东西,那么以后我就能直接运行npm run test来代替运行后面那一长串的东西,可以让你后面执行的时候少敲一些键盘,而且也更容易记住。

  • author:作者信息

  • license:许可证,这个新手一般用不到,默认即可,除非你想要开源你的代码,那可以再自己研究研究。

上面的步骤仅仅只是完成了一个最基本的、基于node的项目初始化步骤。

完成了基本的项目初始化之后,下面我们就可以开始安装electron了。

按照官方的说法,你可以继续在命令行当前项目目录下,运行npm install --save-dev electron命令来安装Electron框架。

如果能安装成功自然最好,但很多人可能都会安装失败,因为我也安装失败了,所以可以替换为下面的方式。

运行下面这个命令,全局安装另一个包管理器cnpm,并设置镜像网站(https://registry.npmmirror.com):

npm install -g cnpm --registry=https://registry.npmmirror.com

然后,用这个新安装的cnpm包管理器来下载安装Electron即可,速度非常快!

cnpm install --save-dev electron

安装完成后,当前目录下就又会多出一个文件夹:

image-20240213153925250

node_modules文件夹存放的就是我们下载后的包,所有下载的包都会被放在这个文件夹中。

并且此时我们的包管理文件会多出一个devDependenceies的项,该项的作用就是记录我们当前这个项目用到了那些包。

比如这里由于前面我们在命令行中为本项目安装了electron,所以这里就将electron写入其中了,并且后面还有对应使用的版本号。

除此之外,我还将原本的脚本命令test改为了start,并让其值为electron .,这个命令就是electron框架的运行命令,后面我们将直接使用npm run start代替,可以方便使用。

至此,我们的Electron就安装完成了!

三、简要总结

总的来说,上面这样的安装配置过程、乃至后文将要介绍的基本electron程序开发流程,都是一件非常繁琐的事情。

但我依旧还是推荐你挨着将其过一遍,因为这可以让你更好的理解electron的运行逻辑。

事实上在真正的项目开发时,我们并不需要手动执行这些过程,因为已经有相应的开源项目可以让我们免费使用了。

比如后续将要介绍的使用electron模板、或者直接使用vue开发electron。

原文以及该系列后续文章请参考:安装Electron

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

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

相关文章

软件价值12-射箭游戏

射箭游戏,按空格键发射,打击移动靶,左上角显示成绩状态。 代码: import pygame import sys import random# 初始化Pygame pygame.init()# 设置窗口大小 SCREEN_WIDTH 800 SCREEN_HEIGHT 600 screen pygame.display.set_mode((…

leetcode:55.跳跃游戏

1.解题思路:贪心算法看最大覆盖范围 2.模拟过程: 1.若数组长度等于1,直接返回True 2.循环遍历覆盖范围,选取最大的覆盖范围;若覆盖范围覆盖到了最后一个元素,直接返回true. 3.代码:(贪心无套…

蓝牙BLE学习-蓝牙广播

1.概念 什么叫做广播,顾名思义就像广场上的大喇叭一样,不停的向外传输着信号。不同的是,大喇叭传输的是音频信号,而蓝牙传输的是射频信号。 BLE使用的是无线电波传递信息,就是将数据编码,调制到射频信号中发…

Node.js开发-HTTP协议

HTTP协议 1) 概念2) 请求报文的组成3) HTTP 的请求行4) HTTP 请求头5) HTTP 的请求体6) 响应报文的组成7) 创建 HTTP 服务8) 获取 HTTP请求报文9) 设置 HTTP 响应报文10) 设置资源类型(mime类型)11) GET和POST请求的区别 1) 概念 HTTP(hyper…

php数组与字符串函数

php数组与字符串函数 1. php数组2. 字符串函数 1. php数组 在php中,有三种类型的数组: 数值数组 - 带有数字ID键的数组关联数组 - 带有指定的键的数组,每个键关联一个值多维数组 - 包含一个或多个数组的数组 2. 字符串函数 在PHP中&#xf…

LeetCode:70.爬楼梯

前言:好家伙,一直以为动态规划是啥高大上的,解释那么多,在我看来不过是找规律罢了, 写那么多"专业术语"咋看咋像糊弄人的 (手动扶额) 另外,通项公式虽然抽象还能接受,但是矩阵快速幂…

Spring Boot 笔记 008 创建接口_获取用户信息

1.1.1 编写userinfo接口 1.1.2 User实体类中增加转json忽略password注释 package com.geji.pojo;import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data;import java.time.LocalDateTime;//lombok 在…

给定n个结点的树,其中有k个结点是特殊结点(未知),定义好结点:该结点到k个特殊结点的距离之和最小。若随机k个结点为特殊结点,求好结点个数的期望值

题目 思路: 举例: 其中黑色结点为特殊结点,可以看出,每种情况都有一个结点的s值不等于k / 2,但是是好结点,所以最后答案加一。 #include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second …

Linux释放内存

free -m是Linux上查看内存的指令&#xff0c;其中-m是以兆&#xff08;MB&#xff09;为单位&#xff0c;如果不加则以KB为单位。 如下图表示&#xff0c;&#xff08;total&#xff09;总物理内存是809MB&#xff0c;&#xff08;used&#xff09;已使用167MB&#xff0c;&…

【深度学习】: 脑部MRI图像分割

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现&#xff08;实验满分&#xff09;&#xff0c;只展示主要任务实验结果&#xff0c;如果需要详细的实验报告或者代码可以私聊博主&#xff0c;接实验技术指导1对1 有任…

不可错过!10款超赞实用插件框架

Cocos 游戏开发十八般武器&#xff0c;尽在 Cocos Store 今天给大家分享10款实用插件与框架&#xff01; 1. 快闪-Tab标签王(prefab标签栏) 作者&#xff1a;嘉年华&#xff08;gameWs&#xff09; 《快闪-标签王》插件&#xff0c;解决了日常开发过程中&#xff0c;经常需要通…

一起玩儿Proteus仿真(C51)——05. 红绿灯仿真(一)

摘要&#xff1a;本文介绍如何仿真红绿灯 今天来做一个红绿灯仿真的程序&#xff0c;这个程序主要包括一下这些功能&#xff1a; 模拟的路口为十字交叉路口&#xff0c;假设东西和南北方向都是双向行驶&#xff0c;因此需要设置4组红绿灯和4个倒计时显示屏。倒计时时间最长为9…

.NET高级面试指南专题七【SocketWebSocket】

Socket&#xff08;套接字&#xff09;是一种在计算机网络中实现通信的一种机制&#xff0c;它提供了一种标准的接口&#xff0c;使不同计算机上的程序能够通过网络进行数据交换。Socket允许在网络中的不同设备之间建立连接&#xff0c;进行双向的数据传输。 Socket通常用于实现…

C语言学习day13:for循环练习(生成随机数)

题目&#xff1a; 通过程序随机一个1-100的数&#xff0c;用户通过键盘输入数字 看是否匹配&#xff0c;匹配成功则跳出循环&#xff0c;失败则继续循环。 思路&#xff1a; 然后生成一个随机数需要写成死循环&#xff0c;同时需要有其他的出口可以写一个提示&#xff0c;比…

猫头虎分享已解决Bug || 任务调度失败(Cron Job Failure):CronJobError, ScheduledTaskFailure

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

炫酷3D按钮

一.预览 该样式有一种3D变换的高级感&#xff0c;大家可以合理利用这些样式到自己的按钮上 二.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice…

URL编码算法:解决特殊字符在URL中的烦恼

引言&#xff1a; URL编码算法是一种将URL中的特殊字符转换为特定格式的编码方式。它在网络传输中起到了保护数据安全与完整性的重要作用。本文将深入探讨URL编码算法的优点与缺点&#xff0c;并介绍它在Web开发、网络安全等方面的应用。 URL编码解码 | 一个覆盖广泛主题工具…

Decian 12.x基于LNMP安装phpIPAM(IP管理系统)

phpipam是一个开源Web IP地址管理应用程序&#xff08;IPAM&#xff09;。其目标是提供轻便&#xff0c;且有用的IP地址管理系统。它是基于PHP的应用程序&#xff0c;具有MySQL数据库后端&#xff0c;使用jQuery库&#xff0c;ajax和HTML5 / CSS3功能。 在Debian 12中&…

20240212请问如何将B站下载的软字幕转换成为SRT格式?

20240212请问如何将B站下载的软字幕转换成为SRT格式&#xff1f; 2024/2/12 12:47 百度搜索&#xff1a;字幕 json 转 srt json srt https://blog.csdn.net/a_wh_white/article/details/120687363?share_token2640663e-f468-4737-9b55-73c808f5dcf0 https://blog.csdn.net/a_w…

PHP开发日志 ━━ 深入理解三元操作与一般条件语句的不同

概况 三元运算符的功能与“if…else”流程语句一致。 在一般情况下&#xff0c;三元操作替换if条件语句可以精简代码&#xff0c;并且更为直观&#xff0c;但是在下面的情况中使用三元操作将会返回警告。 借图&#xff1a; 案例 比如原代码&#xff1a; class classA{publ…