【Electron教程01】跨平臺(tái)桌面應(yīng)用開(kāi)發(fā)介紹
一、 為什么要學(xué) Electron
Electron 是一個(gè)跨平臺(tái)的桌面應(yīng)用開(kāi)發(fā)框架,用 html css js 的技術(shù)開(kāi)發(fā)桌面上面可以安裝的軟件。
“Electron 又為前端開(kāi)發(fā)者謀得了一份好的差事”。
想起在網(wǎng)路里流傳很廣的一句話“不要和老夫說(shuō)什么 C++,Java,老夫行走江湖就靠一把 JS,遇到需求擼起袖子就是干”。
是的 Electron 看上去是在蠶食桌面客戶端領(lǐng)域的市場(chǎng)份額。
說(shuō)起桌面應(yīng)用, 想必大家使用過(guò)的就已經(jīng)海了去了。什么暴風(fēng)影音、QQ、skype 之類的,早已不是新鮮事!不過(guò)大家有沒(méi)有了解過(guò)如何編寫一個(gè)桌面應(yīng)用? 歷史上, 我們都有哪些方式去編寫桌面應(yīng)用呢?
實(shí)際上,桌面應(yīng)用的歷史并不算久遠(yuǎn),不去查找各種資料,僅憑記憶,我能想到的曾經(jīng)出現(xiàn)過(guò)的桌面應(yīng)用編寫語(yǔ)言就有:C++、Delphi、VB、winForm、WPF、swing、awt、QT、flash、Objective-C、Swift...或許還有更多。
學(xué)習(xí)成本是不是有點(diǎn)高?這么多語(yǔ)言/技術(shù)!! 如果你恰好還碰到了一個(gè)吹毛求疵的老板或 者PM,他就是那么迫切的希望自己的 app 能夠多平臺(tái)發(fā)布(也不管在那些平臺(tái)上是否有客戶),作為程序員的你,腫么辦?是勇挑大梁,然后各技術(shù)棧學(xué)習(xí)失敗,最終自盡以謝老板?還是果斷離開(kāi)?
當(dāng)然都不是,夠懶的程序員應(yīng)該尋找更容易實(shí)現(xiàn),又能滿足老板需求的解決方案。那么,我們來(lái)看看今天的話題,electron 吧!
截止 2019-9-7: electron Github 的 star 已經(jīng)達(dá)到 76萬(wàn)了,那么他的用戶量可能已經(jīng)上 1000萬(wàn)了。還有大家知道的 github 的 atom 編輯器、微軟的vscode 編輯器,還有迅雷X以上版本,包括阿里內(nèi)部的一些軟件也是用 electron 開(kāi)發(fā)的。既然這么熱,那就一個(gè)字:學(xué)。
二、 基于 Nodejs 的主流桌面應(yīng)用開(kāi)發(fā)框架 NW.js 和 和 Electron
NW.js 和 Electron 都可以用前端的知識(shí)來(lái)開(kāi)發(fā)桌面應(yīng)用。NW.js 和 Electron 起初是同一個(gè)作者開(kāi)發(fā)。后來(lái)種種原因分為兩個(gè)產(chǎn)品。一個(gè)命名為 NW.js(英特爾公司提供技術(shù)支持)、另一命名為 Electron(Github 公司提供技術(shù)支持)。
NW.js和Electron可以用Nodejs中幾乎所有的模塊。NW.js和Electron不僅可以把html寫的 web 頁(yè)面打包成跨平臺(tái)可以安裝到電腦上面的軟件,也可以通過(guò) javascript 訪問(wèn)操作系統(tǒng)原生的 UI 和 Api(控制窗口、添加菜單項(xiàng)目、托盤應(yīng)用菜單、讀寫文件、訪問(wèn)剪貼板)。
三、Electron 詳細(xì)介紹
1. Electron 目前是由誰(shuí)開(kāi)發(fā)并維護(hù)的?
答: Electron 是由 Github 開(kāi)發(fā)維護(hù)
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ā) (以防依賴庫(kù)和 API 的泛濫) ,
Electron 限制了所使用的核心項(xiàng)目的數(shù)量。
比如 Electron 只用了 Chromium 的渲染庫(kù)而不是其全部組件。這使得升級(jí) Chromium 更加容易,但也意味著 Electron 缺少了 Google Chrome 里的一些瀏覽器相關(guān)的特性。
添加到 Electron 的新功能應(yīng)該主要是原生 API。 如果可以的話,一個(gè)功能應(yīng)該盡可能的成為一個(gè) Node.js 模塊。
9. Electron 當(dāng)前的最新版本為多少?
Electron 當(dāng)前的最新版本為 7.0(當(dāng)前時(shí)間為 2019 年 9月 7 號(hào))
四、 學(xué)習(xí)前的準(zhǔn)備工作
1. 電腦需要安裝 nodejs
2. 電腦上面需要安裝 git
3. 需要有 Html css js 以及 nodejs 基礎(chǔ)