版权:禁止任何形式的转载html
备注:我是用其余编辑器编辑的,发现导出后,标题就不对了,后面再找时间修改吧,或者你们到这里看:https://gitbook.cn/gitchat/ac...node
Electron 是一个使用 JavaScript、 HTML 和 CSS 等 Web 技术建立跨平台桌面应用程序的框架,它负责比较难搞的部分,你只需把精力放在你的核心业务开发上便可。说到把精力放到核心业务开发上,这听起来特别诱人,可是不少初学者在第一个 Hello World 上就被各类拦路虎挡住了,我这篇文章的目标就是帮助你们跳过去,把精力放在核心业务上。git
这是一篇 Electron 入门教程,让你们能快速搭建开发环境、会写 Hello World、会用 Git 作开发版本管理、会用 SemVer 作发布版本管理、会打包成 exe 文件发布,目标是让你们能尽快把精力放到业务开发上去。github
适宜人群
Web 初学者
Electron 初学者
想用 Web 技术开发桌面应用的开发者shell
看完本教程,您将收获以下知识点:npm
tips:
本教程Electron 版本是 5.0.0,Node.js 版本是 12.1.0,操做系统是 Windows10,没有Mac OS 和 Linux相关的特定内容。
Electron 支持 Windows 7 及以上版本,任何在低版本 Windows 上开发 Electron 的尝试都将是徒劳无功的。 若是你的 Windows 低于Windows 7,您可使用微软向开发者免费提供的 Windows 10 虚拟机镜像,连接: https://developer.microsoft.com/zh-cn/windows/downloads/virtual-machines。约定:
下文说在 VSCode 终端工具上执行下面的命令,是指在 Visual Studio Code 横排菜单的那个终端工具里执行命令,固然您彻底能够在操做系统自带的 CMD 命令行工具或 Windows PowerShell 上执行命令,在一些场景它可能还更高效,若是您还不会灵活使用,不用纠结,下面按提示操做便可。编程
因为本人能力有限,疏漏或错误在所不免,还望读者朋友若发现错误或者其余问题,能给予谅解及批评指正。json
Electron 通俗点讲就是用 HTML、CSS、JavaScript 开发跨平台桌面应用程序的一个框架。
可是今天官网不建议去看了,我想您搜到这篇文章,是直接来收干货的,不过传送门仍是根据惯例要上,官网:https://electronjs.org/ 。windows
下载并安装:https://code.visualstudio.com
Windows 系统下载后直接下一步下一步,按默认选项安装便可,这里再也不讲安装。
今天也不深刻讲解VSCode的使用,也不建议你去看,不过教程传送门按惯例仍是上一下:https://www.jianshu.com/p/75652eb00680
不得不提,VSCode就是用 Electron 开发的。浏览器
Electron 依赖 Node.js,因此要先下载并安装 Node.js,不过您得先肯定要装哪一个版本的 Electron,而后下载对应的 Node.js 版本,好比我这里是用Electron 5.0.1,我下载的 Node.js 是12.0.0。
各版本如图
Windows 系统下载后直接下一步下一步,按默认选项安装便可,这里再也不讲安装。npm 是包管理器,它会一块儿安装,下面将用到它。
下载并安装:http://nodejs.cn/download/
检查安装是否成功,在 VSCode 终端工具上执行命令:
node -v npm -v
成功输出版本则安装成功
在 VSCode 终端工具上用 npm 包管理器安装 Electron (在国内,若是也怕一天一晚上都没装起来的朋友,请自动忽略这一步,跳到设置淘宝镜像):
npm install electron --save-dev
tips:
--save-dev 参数在下面有讲解
若是执行上一步提示了 npm 版本太低,在 VSCode 终端工具上用下面的命令升级 npm:
npm install -g npm
报错的话,看下面的报错处理。
若是下面配置了淘宝镜像,也遇到提示须要升级npm,执行下面的命令:
cnpm install -g npm
若是执行报错:Error: EPERM: operation not permitted……,请按Win + X 启动 Windows PowerShell(管理员)(A),而后执行命令。
弃用上面的命令,执行下面的命令,用淘宝镜像提速:
npm install -g cnpm --registry=https://registry.npm.taobao.org
这样之后就能够用 cnpm 代替 npm
在 VSCode 终端工具上执行下面的命令安装 Electron:
cnpm install electron --save-dev
tips:
cnpm 跟 npm 用法彻底一致
淘宝镜像官网: https://npm.taobao.org/
删除 Electron:cnpm uninstall electron (在哪一个目录下,卸载哪一个目录下的,若是报错,请按Win + X 启动 Windows PowerShell(管理员)(A),而后执行命令。
升级 Electron:cnpm update electron -gtips:
若是想不一样项目使用不一样版本的 Electron,安装时就不能用 -g 参数,如生产环境用 LTS 稳定版本,新功能学习用 Current 版本。
分别用到参数为 -g,--save,--save-dev,-D,关于这几个参数下面的解释还不够,你们还须要百度,今天就不用了。
首选是 --save-dev 安装到具体项目下
关于参数的更多介绍请看教程:http://www.cnblogs.com/limitcode/p/7906447.html
--save:是将模块安装到项目目录下,并在 package.json 文件的 dependencies 节点写入依赖
--save-dev 或 -D:意思是将模块安装到项目目录下,并在 package.json 文件的 devDependencies节点写入依赖
那 package.json 文件里面的 devDependencies 和 dependencies 对象有什么区别呢?devDependencies 里面的插件只用于开发环境,不用于生产环境,而 dependencies 是须要发布到生产环境的
为何要保存在 package.json?由于节点插件包相对来讲很是庞大,不加入版本管理,将配置信息写入 package.json,方便将其加入版本管理,其余开发者对应下载便可(命令提示符执行 npm install,则会根据 package.json 下载全部须要的包)。全局安装:-g
全局安装代码:cnpm install -g electron
全局将会安装在 C: Users Administrator AppData Roaming npm,而且写入系统环境变量;
全局安装能够经过命令行任何地方调用它;非全局安装:--save-dev
非全局代码:cnpm install --save-dev electron
非全局安装:将会安装在当前定位目录(须要cd切换到具体项目目录,或者在项目目录按住 Shift,而后右键,启动 Powershell 执行命令);
非全局安装将安装在定位目录的 node_modules 文件夹下,经过要求()调用;tips:
这里顺便提一个对初学者比较懵的命令:npm install
乍一看,怎么什么参数都没有,它安装什么呢?其实它是安装当前执行命令所在目录下的json文件里的相关依赖文件。咱们从 GitHub 克隆一个别人的示例,示例里通常是不包含依赖的文件的,可是它的 package.json 里会有依赖列表,就是用这个命令下载一下那些依赖文件。
若是想手工搭建项目能够不安装
Electron-forge 是 Electron 的一个脚手架,它能够自动生成项目文件,这篇文章不会深刻讲它,也能够选择安装,可是暂时不学它。
在 VSCode 终端工具上执行命令,全局安装它:
cnpm install -g electron-forge
D:\ElectronProject └── ElectronDemo
手工在 D 盘建立文件夹,ElectronDemo 文件夹在 ElectronProject 文件夹里面(此次推荐手工快速建),或者在 VSCode 终端工具上执行下面的命令建立文件夹:
D: #本行写法是为了兼容 cmd 命令行工具切换盘符的写法 mkdir \ElectronProject\ElectronDemo
用 Visual Studio Code 软件来新建三个文件,这里很少说,跟微软其余软件新建文件同样,建立完之后,保存到 D:ElectronProjectElectronDemo,目录是这样的。
习惯用其余 IDE,请直接有用其余 IDE,注意新建的文件编码用 UTF-8
D:\ElectronProject\ElectronDemo ├── package.json ├── index.js └── index.html
三个文件之间的关系:index.html 是咱们想要显示的页面,index.js 为此应用的入口,package.json 为 npm 项目的配置文件。
在 VSCode 终端工具上执行下面的命令:
cd D: #本行写法是为了兼容 cmd 命令行工具切换盘符 cd \ElectronProject\ElectronDemo npm init
tips:
若是你以为cd命令慢,你能够在 ElectronDemo 文件夹下按住 Shift 键,而后点右键,启动 Powershell,而后输入 npm init 后回车
而后一路回车,能够所有用默认,也能够改内容,建立完,我这里显示以下,其中版本我改了一下,您的多是 "version":"1.0.0",这一篇还不用纠结这些具体是什么意思。
{ "name": "ElectronDemo", "version": "0.1.0", "description": "test", "main": "index.js", "author": "qian", "license": "ISC", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" } }
//引入 electron 模块,它必须引入 //该模块导出了一个 app 对象和一个 BrowserWindow 类,app 对象包含一些方法,如 on 方法用于将事件绑定到事件函数中。 const {app,BrowserWindow} =require('electron') // 保持一个对于 window 对象的全局引用,若是你不这样作, // 当 JavaScript 对象被垃圾回收, window 会被自动地关闭 let mainWindow function createWindow(){ //建立浏览器窗口 mainWindow = new BrowserWindow({width:1024,height:768}) //载入index.html mainWindow.loadURL(`file://${__dirname}/index.html`) } //ready是当Electron完成初始化后触发,这里初始化后就会去执行 createWindow 函数,而后建立浏览器窗口并加载主页面。 app.on('ready',createWindow)
tips:
关于加载 html 的代码(上面第9行),在不少其余教程您可能看到的写法是 mainWindow.loadFile('./index.html') ,可是会报 mainWindow.loadFile is not a function 错误,改写成上面的 mainWindow.loadURL 写法,它加载一个 url,能够是本地文件或者是远程 url,则不会报错,注意不是单引号,是键盘ESC键下面的那个,而且注意是要英文输入法下输入。
另外关于分号(;),我这里是不加,分号要不要加,你们看到 js 代码有的教程里有分号,有的没有,好比个人,到底哪一种最优。关于加不加,能够参考 Vue贡献者尤雨溪的回答 : https://www.zhihu.com/question/20298345/answer/49551142
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Electron 项目</title> </head> <body> <h1>这是咱们的第一个 ELECTRON 练习项目</h1> </body> </html>
在 VSCode 终端工具上执行下面的命令:
cd D:\ElectronProject\ElectronDemo
tips:
不切换到项目目录,没法启动项目
若是你以为cd命令慢,你能够在 ElectronDemo 文件夹下按住 Shift 键,而后点右键,启动 Powershell,而后执行 electron . 命令
继续执行命令:
electron .
不出意外,将正常启动项目
在 VSCode 终端工具上执行下面的命令:
D: #本行写法为兼容 cmd 命令行工具切换盘符的写法 cd \ElectronProject electron-forge init Electron-forgeDemo
tips:
若是你以为cd命令慢,你能够在 ElectronProject 文件夹下按住 Shift 键,而后点右键,启动 Powershell,而后输入 electron-forge init Electron-forgeDemo 后回车
建立过程杀毒软件可能会对操做dll进行阻止,点容许。
建立成功后,它会自动生成一个文件夹,文件目录应该是这样:
D:\ElectronProject ├── ElectronDemo ├── Electron-forgeDemo
继续执行下面的命令启动项目
cd \ElectronProject\Eelectron-forgeDemo electron-forge start
tips:
不切换到项目目录,没法启动项目
若是你以为cd命令慢,你能够在 Eelectron-forgeDemo 文件夹下按住 Shift 键,而后点右键,启动 Powershell,而后输入 electron-forge start 后回车
它是一个 Electron 的预编译版本
cnpm install -g electron-prebuilt
它是一个用于打包 Electron 应用的工具
cnpm install -g electron-packager
electron-packager . ElectronDemo --win --out ../myElectronDemo --arch=x64 --electron-version=5.0.0 --overwrite --ignore=node_module
tips:
格式这样
electron-packager <应用目录> <应用名称> <打包平台> --out <输出目录> <架构> <应用版本>
对应关系
electron-packager . ElectronDemo --win --out ../myElectronDemo --arch=x64 --electron-version=5.0.0 --overwrite --ignore=node_module
. 点表明当前目录
ElectronDemo 表明应用名称
win 表明打包平台 Windows
../myElectronDemo 在项目上级文件夹新建文件夹
electron-version=5.0.0 表明 Electron 的版本号,我这里是5.0.0
--overwrite 是覆盖原文件
--ignore=node_module 是忽略node_module打包过程,杀毒软件可能会报操做关键 dll ……,点容许。
打包完成,到上级目录找到打包好的文件夹,进去执行 exe 便可启动应用。
"scripts": { "test": "echo \"Error: no test specified\" && exit 1" "package":"electron-packager . ElectronDemo --win --out ../myElectronDemo --arch=x64 --electron-version=5.0.0 --overwrite --ignore=node_module" }
而后在 VSCode 终端工具上执行下面的打包命令:
cnpm run-script package
上面两步的任何一步,执行完毕后,看到父级目录下已经产生了咱们但愿看到的应用文件夹,双击里面的应用程序 electron01.exe 就能够直接打开桌面应用了,不过还不是安装包。
若是咱们想要更改窗口左上角的图标和任务栏的图标,只须要在打包的命令上加个 icon参数就行了。
electron-packager . ElectronDemo --win --out ../myElectronDemo --arch=x64 --electron-version=5.0.0 --overwrite --ignore=node_module --icon=./app/img/icon.ico
火凤官网:www.hofosoft.cn,这个比较简单,可是可控项目少,今天推荐用它。
NSIS 教程:https://www.cnblogs.com/modou/p/3573772.html,这个稍微复杂了一些,可是可控项目特别多,今天不建议你们去看它,这里只给传送门。
咱们用 Git 进行版本控制
tips:
它是 Linux 创始人 Linus Benedict Torvalds 的第二神做,特别好用。
想深学更多 Git,请看廖雪峰老师的 Git 教程: https://www.liaoxuefeng.com/wiki/896043488029600,不过今天不建议你点进去,后面再说,今天还不用去学那么深,不过它是必学。
官网地址:https://www.git-scm.com/download/
安装后,在 Windows 开始菜单或桌面空白处右键,找到并启动 Git Bash 或 Git Bash Here,设置用户和邮箱,执行下面的命令。
git config --global user.name "Your Name" git config --global user.email "email@example.com"
git config 命令中的 --global 参数,这个参数表示这台机器上全部的 Git 仓库都会使用这个配置,固然也能够对某个仓库指定不一样的用户名和 Email 地址。
tips:
至于为何要要设置名字和邮箱,是由于 Git 是分布式版本控制系统,每一个机器都都要自报家门,说出名字和 Email 地址。
那么问题来了,这个用户名与邮箱 能够随便填吗?答案是能够,那有什么做用呢?当邮箱号与 GitHub 上的仓库的邮箱号一致,提交记录左侧会显示帐号头像,而且可点击,而且名字是用的 GitHub 的 username 而不是上面设置的 Your Name,反之不可点击,名字用的是上面配置的 Your Name。
更深刻的内容,请看 Git 教程。
在项目目录下右键,启动 Git Bash Here,并执行命令。
git init
这时将生成一个 git 文件夹,这个目录是 Git 用来跟踪管理版本库的,里面的东西不要手动去修改。
tips:
解释一个谜团,全部的版本控制系统,其实只能跟踪文本文件的改动,另外文本是有编码的,若是没有历史遗留问题,建议统一用 UTF-8(VSCode新建的文件默认了UTF-8,在右下角能够看到),另外不要用 Windows 的记事本,就算设置为 UTF-8 也不要用,具体缘由可百度。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但无法跟踪文件文本的变化,只能把二进制文件每次改动串起来,也就是只知道图片从 10KB 改为了 30KB,但到底改了啥,版本控制系统不知道。
初始化好 git 仓库,咱们将文件夹下的文件添加到 git 仓库。
第一步:在项目文件夹下右键,启动 Git Bash Here(若是上一步你关了的话才要从新启动),用 git add 命令告诉 Git,把文件添加到仓库,若是是全部文件,用点(.)表示,下面有两种代码,选一种。
git add 文件名.后缀 git add .
执行后没有什么提示,那就正确了,没有提示就是最好的提示。
第二步:用 git commit 命令告诉 Git,把文件提交到仓库,提交一次一个版本,后续能够回滚。
git commit -m "提交备注"
tips:
若是你对提交为何要先 add 后 commit 的两步设计有疑问,请看上面的 Git 教程。备注也是重中之中,千万不要写一些没有意义的字符,否则后面可能会哭,正确的作法是简要描述你本本次提交里面改了或者新增了什么。
tips:
今天容许您跳过本节,不过它很重要,后面必定要学。
这里推荐选择的远程仓库平台有:
下面咱们讲 GitHub。
先用邮箱注册一个帐号,设置 username,这里取好听一点,不事后面可改,这个是公开的,好比 PG 大神德哥的 GitHub 地址是:https://github.com/digoal ,最后的 digoal 就是 username。
本地 Git 仓库和 GitHub 仓库之间的传输,有两种:
https 这里不推荐,用它速度会慢一点,另外每次链接要输入密码,有点麻烦,今天讲解 SSH 加密的,因为远程推送须要验证身份,因此须要设置。
接下来说操做流程,进入到项目文件夹,空白处点鼠标右键,打开 Git Bash Here
检查公钥是否存在,输入命令:
cd ~/.ssh #打开公钥目录 ls #查看是否存在公钥id_rsa.pub
个人执行结果以下,表明有了,不用建立了:
id_rsa id_rsa.pub known_hosts
检查邮箱,输入命令:
git config --global --list #检查邮箱是什么
个人执行结果以下:
filter.lfs.clean=git-lfs clean -- %f filter.lfs.smudge=git-lfs smudge -- %f filter.lfs.process=git-lfs filter-process filter.lfs.required=true user.email=5627XXX767@qq.com user.name=ccc winupdater.recentlyseenversion=2.21.0.windows.1
若是没有 id_rsa.pub ,就执行下面的命令新建 SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
tips:
"youremail@example.com"改成"327XXX727@qq.com"
邮件地址换成你本身的邮件地址,而后一路回车,使用默认值便可,一切顺利的话,能够在用户主目录里找到.ssh目录(个人在:C:Usersqian.ssh),里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,能够放心地告诉任何人,这里就填到 GitHub 上。
文件夹里应该以下的样子:
~/.ssh
├── id_rsa
├── id_rsa.pub
└── known_hosts
建立过程,命令行会显示新生成的公钥保存在哪一个目录(个人在:C:Usersqian.ssh),到那个目录找到 id_rsa.pub ,而后按下面的流程操做:
在 Git Hub 右上角找到 “Create a new repo” 按钮,填写仓库名 ElectronDemo ,而后点击 “Create repository” 按钮建立一个仓库。
tips:
当本地有个文件夹里的仓库要上传到远程仓库(本地能够有多个文件夹里的项目,同步到通一个 GitHub 上,只需先在 GitHub 上建立一个仓库。
这里不用勾选生成 README,若是勾选了,后面第一次本地与远程同步,须要先 git pull 拉远程的到本地,而后 git push 推上去,咱们今天只是入门,因此不建议你们搞复杂了,后面直接往上推便可。
在本地项目文件夹里空白处右键,打开 Git Bash Here,而后输入以下命令
git remote add origin git@github.com:lixiang/ElectronDemo.git
tips:
上面的命令是与远程仓库创建联系,下面的命令是当前文件夹下的仓库与 GitHub上的ElectronDemo 创建联系,把这个写到了当前文件夹下的 git 目录里的 config 文件夹里,这样下面就能够在当前目录打开 Git Bash Here 而后执行 git push origin master 它就会把当前文件下的仓库,对应传到 GitHub 上的仓库里。
git remote add origin git@github.com:lixiang(GitHub 上的username)/ElectronDemo(仓库名).git
把上面的 lixiang 替换成你本身的 GitHub 帐户名,不然您没法把您本地的项目推送到 Git Hub 仓库的,由于你本地没有个人 id_rsa.pub 公钥。ElectronDemo 替换成 Github 官网上的仓库名称(repository),注意 Github 上的仓库名称, 不支持中文,而且必须手工去 GitHub 上先创建仓库。
执行命令若是提示:fatal: remote origin already exists. 它的意思是远程 origin 已经存在。那么执行:git remote rm origin 而后再从新执行 git remote add origin ......
还有可能会报的错误是,提示没有姓名,邮箱,那就是前面没有设置,请设置。
在本地项目文件夹里空白处右键,打开 Git Bash Here,而后输入以下命令
git push -u origin master
tips:
因为远程库是空的,咱们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在之后的推送或者拉取时就能够简化命令。
至此,本地仓库的内容就与远程仓库的内容一致了。
关于远程仓库咱们本教程就到这里,其余内容建议学习上面的 Git 教程,真心写的好。
git push origin master
当本地有用 git commit 命令,向本地版本库提交了新的版本,则能够能须要git push 把本地更新推送到远程,具体语句有下面的这些写法,主要是看参数写与不写的意思。
git push <远程主机名> <本地分支名> <远程分支名> git push origin master:refs/for/master
上面语句便是将本地的master分支推送到远程主机origin上的对应master分支
至于分支建立合并、版本回退,冲突处理等,本篇文章再也不讲解,也不但愿你如今就去看,目前每次会把更新推送到 master 主分支就能够了,后面你能够看上面的 Git 教程。
生产版本管理,要根据下面这样的语义规则来,好比2.0.0跟1.5.3之间,应该是有 API 突破性变动,或者 Node.js 重大版本跟新,或者 Chromium 版本更新了,才能改最前面的一位,不是随意编出来的,咱们发布版本时版本编号应该以下这样来肯定每位的增长。
这里再也不赘述,直接上别人的教程,今天能够不用深读。
生产版本建议参考:https://semver.org/lang/zh-CN/
Electron 遵循:https://electronjs.org/docs/tutorial/electron-versioning#semver
下一篇教程咱们将精力放在业务上面,咱们试着作个小项目,这样对你们的学习更有帮助,咱们要尽快从 Hello World 日后面走,怀旧不适合学习编程,对吧。
强烈建议加QQ群:1025951999,方便交流,也方便有文章时能及时通知你们。你们也请在 GitChat 上关注我,以便更容易找到我。