主進程(Main Process)
package.json中的main指定的腳本是主進程。主進程主要負責:
- 創建Web頁面(BrowserWindow實例)並管理Web頁面;
- 負責進程間通信;
- 處理系統事件;
渲染進程(Renderer Process)
每一個Web頁面都運行在各自的進程中,這裏的進程就是渲染進程。Electron可以在Web頁面中使用Node.js APIs與底層操作系統交互,這一點非常了不起,也是Electron應用於桌面應用開發的主要價值(我可能更關注的是通過Node.js訪問操作系統硬件設備的能力)。
特點:
- 渲染進程之間是隔離的;
- 每一個渲染進程只關心自己的Web頁面;
- 在Web頁面中不允許調用和本地GUI相關的APIs;
- 如果Web頁面需要執行GUI操作,則必須由渲染進程請求主進程代爲執行;
注意:在通常的瀏覽器中,Web頁面是運行在沙箱環境中,不允許訪問本地資源(應該是處於用戶數據安全性考慮)。
進程間通信
顯然,這裏的進程間通信包含兩種情形:
- 主進程和渲染進程通信:
- [ipcRenderer](http://electron.atom.io/docs/api/ipc-renderer/) - [ipcMain](http://electron.atom.io/docs/api/ipc-main/) - [remote](http://electron.atom.io/docs/api/remote/)
- 渲染進程之間通信:share data between web pages
應用結構
一般來說,Electron app的結構是這樣的:
your-app/
├── package.json
├── main.js
└── index.html
package.json的格式與Node模塊中的格式完全一樣(從某種程度上看,Electron app也是一個Node模塊,但是隻能通過Electron執行,而不是Node執行)。
main.js則是主進程腳本。index.html就是應用的UI。