Electron 主程序和渲染程序互相通訊

2022-07-06 01:09:07 字數 2335 閱讀 4779

說明:

自主到從:從main到renderer的訊息傳遞,借助browerwindow.webcontents.send()傳送訊息。

自從到主:從renderer到main的訊息傳遞,借助ipcrender和ipcmain傳送/接收訊息。

事件機制:無論是browerwindow.webcontents.send(),還是ipc,其實都是node的事件機制,都是eventemitter的例項。

主程序let win = null

win = new browserwindow()

win.loadurl(`file:

//$/index.html`)

win.webcontents.on('did-finish-load', () =>)

})index.html

<

html

>

<

body

>

<

script

>

require(

'electron

').ipcrenderer.on(

'ping

', (event, message)

=>)

script

>

body

>

html

>

index.html 

doctype html

>

<

html

lang

="en"

>

<

head

>

<

title

title

>

head

>

<

body

>

<

input

type

=""name

=""id

="ipt"

value

="">

<

button

type

="button"

onclick

="connectmain()"

>和主程序通訊

button

>

<

script

>

const ipc

=require(

'electron

').ipcrenderer;

vaript

=document.getelementbyid(

'ipt')

function

connectmain()

script

>

body

>

html

>

主程序

const ipc = require('electron').ipcmain

ipc.on('getmsg', (sys, msg) =>)

例子,在主程序和渲染程序之間傳送和處理訊息:

(過程:渲染程序發訊息->主程序接收訊息並回覆->渲染程序接收主程序的回覆)

渲染程序:

//

in renderer process (web page).

const ipcrenderer = require('electron').ipcrenderer;

console.log(ipcrenderer.sendsync('synchronous-message', 'ping')); //

prints "pong" 傳送同步訊息

ipcrenderer.on('asynchronous-reply', function(event, arg) );

ipcrenderer.send('asynchronous-message', 'ping'); //

傳送非同步訊息

主程序:

//

in main process.

const ipcmain = require('electron').ipcmain;

ipcmain.on('asynchronous-message', function(event, arg) );

ipcmain.on('synchronous-message', function(event, arg) );

參考:

參考官網:

electron主程序通訊渲染程序

可以先去看看之前的 主程序即electron的main.js。渲染程序即browserwindow物件新建的。定義乙個js檔案這裡就叫renderer吧,在全域性定義乙個electron物件用來進行與html進行訂閱事件通訊。global.electron require electron 在bro...

electron 3 主程序與渲染程序

渲染程序不能直接引入browserwindow模組 借助remote模組,從remote中拿到主程序允許使用的模組 const require electron remote let btn document.queryselector btn btn.onclick function index....

主程序和渲染程序

chromium每個tab都是乙個程序 主程序 main process 可以使用和系統對接的api,建立選單,上傳檔案等等 建立渲染程序 全面支援node.js 只有乙個,作為整個程式的入口點 渲染程序 main process 可以有多個,每個對應乙個視窗 每個都是單獨的程序 全面支援node....