Electron學習--主進程和渲染進程

主進程和渲染進程

1. 主進程:

在Electron中運行package.json和main腳本的進程稱爲主進程。例如,main.js文件屬於主進程,同時在main.js文件中直接引入的js文件也屬於主進程(如:require(’./mainProcess/menu.js’))

2. 渲染進程:

electron使用Chromium的多進程機制來渲染頁面,每個頁面擁有一個自己的進程,該進程稱爲渲染進程。如main.js文件中加載了index.html文件,在index.html文件中引入的index.js就屬於渲染進程

3. 主進程和渲染進行之間通信的常見方式:

注意:這些方法全部需要在主進程已經創建了BrowserWindow之後纔有效.

  • 1> ipcRenderer用於渲染進程
    • ipcRenderer.on(channel, listener) --> channel爲事件頻道,字符串.listener爲觸發回調函數,用於響應webContent.send()
    • ipcRenderer.send(channel, data) --> 概念同上,用於向ipcMain發送異步信息
  • 2> ipcMain用於主進程,響應從渲染進程中發送的消息
    • ipcMain.on(channel,listener) --> 響應從ipcRender中相同channel
  • 3> event.sender:主進程監聽到渲染進程發送的消息,在響應事件回調函數中使用event.sender.send()方法可以向渲染進程發送消息
  • 4> webContent:ipcMain本身是無法直接發送事件的,只能通過響應事件回調的event來發送,那如果我們想先讓主進程發送消息就可以使用webcontent.這個webcontent是在BrowserWIndow實例中的方法
    • webContent.send(channel,data) --> 主進程向渲染進程發送消息

4. 不同渲染進程之間共享數據

[1] 我們可以簡單的使用HTML5中提供的API來實現,如localStorage和sessionStorage
[2] 在electron中,我們可以在主進程中將一個對象存儲爲全局變量,在渲染進程中通過remote模塊進行操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章