天天看點

Electron快速入門與實踐

Electron快速入門與實踐

Electron是由GitHub開發的一個開源架構,可用于開發桌面應用程式,Node + Chromium的開發使得它擁有強大的跨平台能力,我們所熟知的GitHub​

​Atom​

​​和微軟​

​Visual Studio Code​

​都是Electron應用程式。

Electron快速入門與實踐

1. 桌面應用的優勢

• 快速打開

• 離線可用

• 調用系統API • 安全

• ...

2. 各大桌面應用開發技術對比

原生桌面技術開發

  • 性能好
  • 功能強大
  • 包體積相對小
  • 門檻高
  • 開發效率低

QT 桌面技術開發

  • 跨平台(支援主流作業系統)
  • 高性能
  • 接近原生應用的體驗
  • C++ 開發門檻較高
  • 開發效率一般

Flutter

• 跨平台、跨端

• 基于web技術

• 桌面端尚未成熟 • 生态發展不完善

NW.js

• 跨平台

• 基于web技術

• 源碼加密、支援chrome擴充 • 社群支援可

• 開發效率高

• 體積大、性能一般

Electron

• 跨平台

• 基于web技術

• 社群活躍、生态好 • 實踐案例多

• 開發效率高

• 體積大、性能一般

3. 架構圖

Electron快速入門與實踐

4. 安裝與環境

環境依賴: ​

​node.js​

​​ & ​

​npm​

IDE: ​

​Visual Studio Code​

​ or 任意編輯器

快速開始:

npm i      

5. 一個最簡的Demo

Electron快速入門與實踐

了解主程序子產品

const { app, BrowserWindow, ipcMain} = require(‘electron’)

  • app 應用的生命周期,例如 app.on(‘ready’,callback)
  • BrowserWindow 控制視窗
let win = new BrowserWindow({width, height, ...}) // 建立視窗
win.loadURL(url)、win.loadFile(path) // 加載遠端或本地頁面      
  • Notification 通知
let notification = new Notification({title, body, actions:[{text, type}]})
notification.show()      
  • ipcMain.handle(channel, handler) 主線程,繼承 Event Emitter

6. 主程序與渲染程序

1. 主程序負責什麼

  • package.json 的 main 腳本
  • 一個應用一個主程序
  • 原生GUI的排程管理,例如BrowserWindow、Tray、 Dock、Menu
  • app 應用生命周期
  • 建立渲染程序

2. 渲染程序負責什麼

  • 展示webui的程序
  • 借助node.js、electron,擁有更多原生能力
  • 一個應用,多個渲染程序

3. IPC(Inter-Process Communication,程序間通信)

  • 通知事件、資料傳輸、資料共享
  • 主程序的ipcMain和渲染程序的ipcRenderer
  • 繼承自EventEmitter

4. 從渲染程序到主程序

  • Callback 寫法:
ipcRenderer.send
ipcMain.on      
  • Promise 寫法 (Electron 7.0 之後,處理請求 + 響應模式)
ipcRenderer.invoke
ipcMain.handle      

7. 優勢總結

  • 不必再為相容性而煩惱
  • 使用chrome的最新特性,無需polyfill • es标準中最新文法
  • 無跨域,請求走nodejs
  • 讀取本地檔案

繼續閱讀