版權:禁止任何形式的轉載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 上關注我,以便更容易找到我。