
【基本介紹】
electron免費(fèi)版是一款Github上的跨平臺(tái)桌面應(yīng)用開(kāi)發(fā)工具,支持Web技術(shù)開(kāi)發(fā)桌面應(yīng)用開(kāi)發(fā),electron免費(fèi)版是基于C++開(kāi)發(fā)的,GUI核心源于Chrome,而JavaScript引擎使用v8,是一款當(dāng)前使用十分廣泛的開(kāi)發(fā)工具之一。
【官方介紹】
Electron是一個(gè)開(kāi)源的跨平臺(tái)開(kāi)發(fā)框架,整合了Node.js、Chromium和V8,讓開(kāi)發(fā)者可以使用HTML、CSS和JavaScript編寫(xiě)跨平臺(tái)桌面應(yīng)用,使用Electron開(kāi)發(fā)的應(yīng)用不僅可以在Windows、Linux以及Mac平臺(tái)下運(yùn)行,還擁有自動(dòng)更新、崩潰報(bào)告、調(diào)試分析等功能,目前微軟、Stack和Docker等多家公司都在使用Electron。
【特色介紹】
網(wǎng)絡(luò)技術(shù)電子使用鉻和節(jié)點(diǎn)。js所以你可以建立你的應(yīng)用程序使用HTML,CSS和JavaScript。

開(kāi)源
電子是一個(gè)開(kāi)源項(xiàng)目維護(hù)的GitHub,一個(gè)活躍的社區(qū)貢獻(xiàn)者。

跨平臺(tái)的
兼容Mac、Windows和Linux,電子應(yīng)用程序構(gòu)建和運(yùn)行在三個(gè)平臺(tái)。

【功能介紹】
1、它依賴(lài)于每一個(gè)Web開(kāi)發(fā)者都已經(jīng)熟知的Web標(biāo)準(zhǔn),讓你可以用它編寫(xiě)桌面軟件。2、它允許開(kāi)發(fā)者專(zhuān)注于核心功能,它去負(fù)責(zé)軟件開(kāi)發(fā)中復(fù)雜的部分。
3、它為桌面應(yīng)用提供了多種核心功能,例如自動(dòng)更新、崩潰報(bào)告、安裝器創(chuàng)建工具和一些具體的系統(tǒng)功能。
4、內(nèi)置的MVC,完全支持Chrome平臺(tái)。
5、Electron使用 web頁(yè)面作為它的GUI,所以你能把它看作成一個(gè)被JavaScript控制的,精簡(jiǎn)版的Chromium瀏覽器。
6、在Electron里,運(yùn)行package.json里main腳本的進(jìn)程被稱(chēng)為主進(jìn)程,在主進(jìn)程運(yùn)行的腳本可以以創(chuàng)建web頁(yè)面的形式展示GUI。

【安裝步驟】
1、在起點(diǎn)軟件園下載node.js,然后安裝。2、cmd下輸入:npm install electron-prebuilt -g

3、解壓這個(gè)文件,然后雙擊exe

4、創(chuàng)建一個(gè)文件夾,里面創(chuàng)建三個(gè)文件
package.json,main.js,index.html
內(nèi)容:
package.json
{
"name": "your-app",
"version" : "0.1.0",
"main": "main.js"
}
main.js
const electron = require('electron');
// Module to control application life.
const {app} = electron;
// Module to create native browser window.
const {BrowserWindow} = electron;
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let win;
function createWindow() {
// Create the browser window.
win = new BrowserWindow({width: 800, height: 600});
// and load the index.html of the app.
win.loadURL(`file://${__dirname}/index.html`);
// Open the DevTools.
win.webContents.openDevTools();
// Emitted when the window is closed.
win.on('closed', () => {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
win = null;
});
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow);
// Quit when all windows are closed.
app.on('window-all-closed', () => {
// On OS X it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
// On OS X it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (win === null) {
createWindow();
}
});
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
We are using node <script>document.write(process.versions.node)</script>,
Chrome <script>document.write(process.versions.chrome)</script>,
and Electron <script>document.write(process.versions.electron)</script>.
</body>
</html>
然后將整個(gè)文件夾,拖到Electron.exe中,顯示效果如下圖所示:

【使用方法】
一、electron vue開(kāi)發(fā)項(xiàng)目教程部署electron開(kāi)發(fā)環(huán)境。
在github上下載最新版的elecctron開(kāi)發(fā)包,目錄結(jié)構(gòu)如下圖,electron的業(yè)務(wù)代碼寫(xiě)在resources文件夾下的app文件夾內(nèi)。


初始化app文件夾。
①在app根目錄下執(zhí)行“npm install”指令,安裝開(kāi)發(fā)依賴(lài)。
②新建package.json和main.js,并在package.json中指定入口為main.js。

在main文件夾下建立Vue應(yīng)用。
在github上下載Vue.js,或者直接在main文件夾下執(zhí)行“npm install vue”。


編寫(xiě)App.vue文件。
現(xiàn)在App.vue就是我們整個(gè)項(xiàng)目的主文件,它控制著項(xiàng)目首頁(yè),因?yàn)閂ue項(xiàng)目本身就適合單頁(yè)面程序開(kāi)發(fā),所以這也是很多人把electron+vue作為技術(shù)棧的原因。

運(yùn)行項(xiàng)目。
選擇調(diào)試引擎Electron Main進(jìn)行調(diào)試,注意launch.json中的"protocol"需要配置為 "inspector",否則會(huì)報(bào)錯(cuò)。


二、快速打包electron應(yīng)用程序
打包的基本命令如下
electron-packager ./ my-app --platform=win32 --arch=x64 --out=myout --electron-version=1.8.1

復(fù)雜點(diǎn)的打包命令
electron-packager . appName --platform=win32 --arch=x64 --download.mirror=https://npm.taobao.org/mirrors/electron/ --electron-version=1.4.2 --asar --app-version=6.6.6 --build-version=7777 --out=outName --overwrite --no-package-manager --ignore="(.git|node_modules)"

打包演示如下



【常見(jiàn)問(wèn)題】
1. Electron是由誰(shuí)開(kāi)發(fā)的?答: Electron是由Github開(kāi)發(fā)
2. Electron是什么?
答: Electron是一個(gè)用HTML,CSS和JavaScript來(lái)構(gòu)建跨平臺(tái)桌面應(yīng)用程序的一個(gè)開(kāi)源庫(kù)
3. Electron把HTML,CSS和JavaScript組合的程序構(gòu)建為跨平臺(tái)桌面應(yīng)用程序的原理是什么?
答:原理為Electron通過(guò)將Chromium和Node.js合并到同一個(gè)運(yùn)行時(shí)環(huán)境中,并將其打包為Mac,Windows和Linux系統(tǒng)下的應(yīng)用來(lái)實(shí)現(xiàn)這一目的。
4. Electron何時(shí)出現(xiàn)的,為什么會(huì)出現(xiàn)?
Electron于2013年作為構(gòu)建Atom的框架而被開(kāi)發(fā)出來(lái)。這兩個(gè)項(xiàng)目在2014春季開(kāi)源。(Atom:為Github上可編程的文本編輯器)
一些歷史:
2013年4月Atom Shell 項(xiàng)目啟動(dòng) 。
2014年5月Atom Shell 被開(kāi)源 。
2015年4月Atom Shell 被重命名為 Electron 。
2016年5月Electron 發(fā)布了 v1.0.0 版本 。
5. Electron當(dāng)前流行程度?
目前Electron已成為開(kāi)源開(kāi)發(fā)者、初創(chuàng)企業(yè)和老牌公司常用的開(kāi)發(fā)工具。
6. Electron當(dāng)前由那些人在維護(hù)支持?
Electron當(dāng)前由Github上的一支團(tuán)隊(duì)和一群活躍的貢獻(xiàn)者維護(hù)。 有些貢獻(xiàn)者是獨(dú)立開(kāi)發(fā)者,有些則在用Electron構(gòu)建應(yīng)用的大型公司里工作。
7. Electron新版本多久發(fā)布一次?
Electron的版本發(fā)布相當(dāng)頻繁。每當(dāng)Chromium、Node.js有重要的bug修復(fù),新API或是版本更新時(shí)Electron會(huì)發(fā)布新版本。
一般Chromium發(fā)行新的穩(wěn)定版后的一到兩周之內(nèi),Electron中Chromium的版本會(huì)對(duì)其進(jìn)行更新,具體時(shí)間根據(jù)升級(jí)所需的工作量而定。
一般Node.js發(fā)行新的穩(wěn)定版一個(gè)月后,Electron中Node.js的版本會(huì)對(duì)其進(jìn)行更新,具體時(shí)間根據(jù)升級(jí)所需的工作量而定。
8. Electron的核心理念是什么?
Electron的核心理念是:保持Electron的體積小 和 可持續(xù)性開(kāi)發(fā)。
如:
為了保持Electron的小巧 (文件體積) 和可持續(xù)性開(kāi)發(fā) (以防依賴(lài)庫(kù)和API的泛濫) ,Electron限制了所使用的核心項(xiàng)目的數(shù)量。
比如Electron只用了Chromium的渲染庫(kù)而不是其全部組件。 這使得升級(jí)Chromium更加容易,但也意味著Electron缺少了Google Chrome里的一些瀏覽器相關(guān)的特性。
添加到Electron的新功能應(yīng)該主要是原生 API。 如果可以的話(huà),一個(gè)功能應(yīng)該盡可能的成為一個(gè)Node.js模塊。

【更新日志】
1、增加了MVC模式控制類(lèi)型2、增加了調(diào)試分析功能
3、解決了一些格式上的已知問(wèn)題
4、修復(fù)了一些bug,優(yōu)化了軟件界面
5、優(yōu)化了軟件性能

































