Electron中頁面之間的通信


Electron的運行環境為Chromium + Node.js, 而Chromium采用的是多進程機制,

也就是說每個頁面都是一個獨立的進程(渲染進程),因此頁面之間是沒有直接關系的,

要想進行通信,需要借助主進程作為橋梁。

所以我們首先先來學習主進程和渲染進程怎么通信:

1. 渲染進程---->主進程

發送端:

  ipcRenderer.send(channel, data)

接收端:

  ipcMain.on(channel, listener)

2. 主進程---->渲染進程

發送端:

  ① 被動發送

  在主進程通過ipcMain.on接收到渲染進程的消息時,可以通過listener函數的event參數得到發送者, 回復消息,

  event.sender.send(channel, data)

  ② 主動發送

  win(要發送給的渲染進程窗體對象變量).webContents.send(channel, data)

 接收端:

  ipcRenderer.on(channel, listener)

 

有了以上背景知識,頁面間通信就很簡單了,頁面1發送事件給主進程,主進程再發送事件給頁面2即可。

 

注:

在Electron 5.x以后的版本,渲染進程默認沒有啟用Node.js環境, 

在創建窗體時需要指定啟用Node環境,否則require命令在渲染進程中將不支持,無法導入electron中的ipcRenderer。

    let win = new BrowserWindow({
        webPreferences: {
            nodeIntegration: true
        }
    })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM