標籤:

一圖淺析electron架構

廢話不多說,electron既然基於chromium,我們先簡單看下chromium架構:

chromium

chromium運行時有一個Browser Process,以及一個或者多個Renderer Process。Renderer Process 顧名思義負責渲染Web頁面。Browser Process則負責管理各個Renderer Process以及其他部分(比如菜單欄,收藏夾等等)。


我們再來看看electron在chromium的基礎上做了什麼:

electron

Renderer Process

在electron中,仍然使用Renderer Process渲染頁面,也就是說electron app使用Web頁面作為UI顯示,並且兼容傳統的Web頁面。不同的是electron app開發者可以可選的配置是否支持Node.js。

Main Process

electron對Browser Process改動較大,乾脆另起一個名字叫Main Process。Main Process 除了原來chromium的runtime,又添加了Node.js的runtime,main.js便運行在此之上。

electron將Node.js的message loop和chromium聯繫起來,使得js中可以靈活的控制頁面顯示,以及和Renderer Process的IPC通信。

當然原生的Node API和第三方的node module同樣支持,並且有electron API提供給開發者控制原生菜單和通知等。

註:Browser Process本來沒有js運行時,所以還需要依賴V8(當然這是chromium中的V8,不是單獨的V8庫)。

以上為個人鄙見,歡迎討論。


推薦閱讀:

史上最小巧的山寨精簡版electron-0.0001版出來啦
什麼是Electron:跨平台桌面應用程序的一個開源庫
Webpack實戰-構建 Electron 應用
bElectron bAPI Demos 項目解析

TAG:Electron |