Electron入門指北
阿新 • • 發佈:2020-11-14
最近幾年最火的桌面化技術,無疑是**Qt+**和**Electron**。
**兩者都有跨平臺桌面化技術,並不侷限於Windows系統**。前者因嵌入式而誕生,在演變過程中,逐步**完善了生態以及工具鏈**。後者則是依託於**Node.Js**和**CCM(Chromium Content Module)**,支援**Node.js**和**Node.js原生**以及自主封裝的**Electron API**。
因為專案考慮跨平臺的技術選型,研究過長達一年的Electron,並且做了很多嘗試,所以想與諸君分享Electron的技術心得。
# Electron的特點
Electron依賴於Node.js,只要會用Node.js開發程式的,都可以用Electron開發桌面應用,只需要前端結合Electron API,就可以快速完成桌面應用,**一處程式碼,多處編譯**。
## Electron的優勢
可以編譯在Windows、Mac、Linux的X64/x86環境,因為是系統**獨立打包,不依賴執行時**。
頁面開發依賴於Node.js加前端,可以很便捷的採用前端開發頁面,再通過Electron API結合的形式,Electron API可以理解為一套Node原生庫,實際上安裝也就是一句 **npm install electron**
Electron核心採用Chromium,可以相容主流瀏覽器,並不需要額外適配,而且採用Chromium LST(長期支援版本),並不會過於激進的選擇最新版本,減少了前端為了相容適配帶來的風險性。
另一方面,採用前端做UI層,可以減少UI對於系統的適配情況。
## Electron的應用場景
由於採用了Node.js和前端的開發模式,本身是一個嵌套了瀏覽器的本地化前端應用,適合一些沒有底層操作的應用場景,甚至前端頁面可以是遠端地址,這樣子完全可以完成桌面應用的無縫**熱更新**
# 技術的侷限性
Electron採用的核心架構是Node.js,所以一旦涉及非頁面展示層的功能,比如要與com互動,要操作底層庫,比如各種硬體互動的SDK XX.dll,這裡就需要參考Node原生來編寫原生擴充套件了。
## Node原生編寫
參照Node.js官網的原生擴充套件,編寫一個簡單的例子
執行npm init
建立一個預設的package.json
以下程式碼儲存為 hello.cc
```c
#include