原文首發於個人博客,歡迎點擊查看得到更好的閱讀體驗~html
前段時間,我用electron-vue開發了一款跨平臺(目前支持Mac和Windows)的免費開源的圖牀上傳應用——PicGo,在開發過程當中踩了很多的坑,不只來自應用的業務邏輯自己,也來自electron自己。在開發這個應用過程當中,我學了很多的東西。由於我也是從0開始學習electron,因此不少經歷應該也能給初學、想學electron開發的同窗們一些啓發和指示。故而寫一份Electron的開發實戰經歷,用最貼近實際工程項目開發的角度來闡述。但願能幫助到你們。前端
預計將會從幾篇系列文章或方面來展開:vue
PicGo
是採用electron-vue
開發的,因此若是你會vue
,那麼跟着一塊兒來學習將會比較快。若是你的技術棧是其餘的諸如react
、angular
,那麼純按照本教程雖然在render端(能夠理解爲頁面)的構建可能學習到的東西很少,不過在main端(electron的主進程)應該仍是能學習到相應的知識的。node
一開始學習electron的時候,我被官網文檔密密麻麻的概念所鎮住了:react
概念太多,沒有辦法一會兒接受。因此我本身學習完electron開發後,作了一張圖。來看看圖理解一下什麼是electron
,以及它包括了啥:webpack
electron由Node.js+Chromium+Native APIs構成。你能夠理解成,它是一個獲得了Node.js和基於不一樣平臺的Native APIs增強的Chromium瀏覽器,能夠用來開發跨平臺的桌面級應用。git
它的開發主要涉及到兩個進程的協做——Main(主)進程和Renderer(渲染)進程。簡單的理解兩個進程的做用:github
ipcMain
和ipcRenderer
來進行通訊。經過事件監聽和事件派發來實現兩個進程通訊,從而實現Main或者Renderer進程裏不能實現的某些功能。說完了electron的組成和須要咱們開發的部分,來講說它的優缺點。web
優勢:vue-router
缺點:
electron-builder
)在mac上至少是45M+起步,在windows上稍微好一點,不過也要35M+起步。不過相比早期打包體積100M+起步來講,已經好了很多。不過解壓後安裝依然是100M+起步。因爲我本身是Vue的技術棧,因此就想在electron裏使用vue。而vue只是在renderer進程裏使用的框架,不涉及到main進程。以下圖:
所以react、angluar以及其餘的前端開發框架一樣適用。
不過想要作到把vue和electron結合起來並非一件特別容易的事。爲了方便開發,我使用的是electron-vue,這個是開發者SimulatedGREG參考vue-cli的webpack模板骨架搭建的electron和vue結合的開發腳手架。因爲我對於vue-cli
很是熟悉,因此上手electron-vue
很是容易。相比不少其餘的教程或者其餘electron+前端開發框架的組裝方案,electron-vue
給我感受最好的是以下:
package.json
。而大部分其餘的項目結構依然在使用兩個package.json
來應對main進程和renderer進程的依賴庫。npm scripts
,使用很是方便。大致的項目結構以下,根據選擇的不一樣設置結構會有所不一樣:
my-project
├─ .electron-vue
│ └─ <build/development>.js files
├─ build
│ └─ icons/
├─ dist
│ ├─ electron/
│ └─ web/
├─ node_modules/
├─ src
│ ├─ main # 主進程
│ │ ├─ index.dev.js
│ │ └─ index.js
│ ├─ renderer # 渲染進程
│ │ ├─ components/
│ │ ├─ router/
│ │ ├─ store/
│ │ ├─ App.vue
│ │ └─ main.js
│ └─ index.ejs
├─ static/
├─ test
│ ├─ e2e
│ │ ├─ specs/
│ │ ├─ index.js
│ │ └─ utils.js
│ ├─ unit
│ │ ├─ specs/
│ │ ├─ index.js
│ │ └─ karma.config.js
│ └─ .eslintrc
├─ .babelrc
├─ .eslintignore
├─ .eslintrc.js
├─ .gitignore
├─ package.json
└─ README.md
複製代碼
能夠看到咱們主要關注的兩個文件夾:src/main
和src/renderer
分別對應的是main進程和renderer進程。咱們的開發大致上也是圍繞這兩個文件夾展開。
參考electron-vue官方的文檔給出的說明,搭建electron-vue的腳手架很是方便,使用vue-cli來安裝它的模板便可:
# 若是你沒有vue-cli的話須要全局安裝
npm install -g vue-cli
# 而後使用vue-cli來安裝electron-vue的模板
vue init simulatedgreg/electron-vue my-project
# 安裝依賴
cd my-project
yarn # or npm install
# 進入開發模式
yarn run dev # or npm run dev
複製代碼
若是你是windows用戶,在安裝期間遇到了關於node-gyp
、C++庫等方面的問題的話,請參考官方文檔給出的解決辦法。
若是上述都沒有問題,那麼你將會看到以下界面:
做爲開篇,內容很少。不過把東西說清楚是必須的。對於electron開發實際上是有兩種聲音的:
其實從本文介紹完,你應該要有一個粗略的認識。electron的開發其實包括了兩個部分,一個是main進程的相關開發,一個是renderer進程的相關開發。對於renderer進程的開發對於大多數前端開發人員來講不難。main進程的相關開發,若是你想要把electron的main進程的因此特性都學一遍、都用一遍,確實是須要很多時間的。不過若是是從需求出發,從工程自己的須要出發,那麼只須要用到的時候再去學習便可。不過要對Node.js能作到的事有個概念——它並非萬能的。
下一篇文章將會正式開啓electron的開發,若是你對此有興趣不妨關注本系列的進展。