electron進程與進程之間的通訊

主進程

在 Electron 裏,運行 package.json 裏 main 腳本的進程被稱爲主進程。在主進程運行的腳本能夠以建立 web 頁面的形式展現 GUI。html

渲染進程

因爲 Electron 使用 Chromium 來展現頁面,因此 Chromium 的多進程結構也被充分利用。每一個 Electron 的頁面都在運行着本身的進程,這樣的進程咱們稱之爲渲染進程。git

在通常瀏覽器中,網頁一般會在沙盒環境下運行,而且不容許訪問原生資源。然而,Electron 用戶擁有在網頁中調用 Node.js 的 APIs 的能力,能夠與底層操做系統直接交互。github

主進程與渲染進程之間的通訊

  • 能夠從主進程中直接發送消息給渲染進程
//main.js
//從主進程發送消息給渲染進程

mainWindow.webContents.send('main-process-messages', 'main-process-messages show')
//index.html,渲染進程中接收消息
const electron = require('electron')
const ipcRenderer = electron.ipcRenderer
ipcRenderer.on('main-process-messages', function(event, message){
    alert(message)
})
  • 經過ipcRenderer和ipcMain進行通訊web

    這個是從渲染進程中發起
//index.html,渲染進程
onst electron = require('electron')
const ipcRenderer = electron.ipcRenderer
function sendTypeOne() {
    //向主進程發送消息
    ipcRenderer.send('MainMsgFromRender','hellow')
}

// 監聽主進程返回的消息
ipcRenderer.on('RenderMsgFromMain', function (event, arg) {
    alert(arg)
})
//main.js
const electron = require('electron')
//主進程
const ipcMain = electron.ipcMain
ipcMain.on('MainMsgFromRender',function (event, arg) {
    console.log(arg)
    event.sender.send('RenderMsgFromMain',arg)
})
  • 經過全局變量
//main.js
global.sharedObject = {
    newTel: '000'
}
//index.html,渲染進程
const remote = require('electron').remote
function sendTypeTwo() {
    alert(remote.getGlobal('sharedObject').newTel)
}

作了一個小demo,能夠下載看看了解更清楚。
demojson

相關文章
相關標籤/搜索