一圖淺析electron架構
廢話不多說,electron既然基於chromium,我們先簡單看下chromium架構:
chromium運行時有一個Browser Process,以及一個或者多個Renderer Process。Renderer Process 顧名思義負責渲染Web頁面。Browser Process則負責管理各個Renderer Process以及其他部分(比如菜單欄,收藏夾等等)。
我們再來看看electron在chromium的基礎上做了什麼:
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 |