electron 笔记 02 进程间通讯
标签:
JavaScript
主进程与渲染进程
方式一 ipc
main.js
const {app, BrowserWindow, ipcMain} = require('electron')
app.on('ready',()=>{
// require('devtron').install()
let mainWindow = new BrowserWindow({
width: 1600,
height: 1200,
webPreferences:{
// 注入node模块
nodeIntegration: true,
contextIsolation: false
}
})
mainWindow.loadFile('index.html')
mainWindow.webContents.openDevTools()
ipcMain.on('msg',(event,arg)=>{
// console.log(event)
console.log(arg)
event.reply('msgMain','hello from main process')
})
})
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<title>Hello World!</title>
</head>
<body>
<h1>Hello Electron!</h1>
<br>
<button id="send">send to main</button>
<script src="renderer.js"></script>
</body>
</html>
renderer.js
const { ipcRenderer} = require('electron')
window.addEventListener('DOMContentLoaded',()=>{
document.getElementById('send').addEventListener('click',()=>{
ipcRenderer.send('msg','hello from renderer')
})
ipcRenderer.on('msgMain',(event,arg)=>{
// console.log(event)
console.log(arg)
})
})
效果
点击界面的按钮
命令行控制台
开发者工具控制台
方式二 remote
main.js
const {app, BrowserWindow, ipcMain} = require('electron')
app.on('ready',()=>{
// require('devtron').install()
let mainWindow = new BrowserWindow({
width: 1600,
height: 1200,
webPreferences:{
// 注入node模块
nodeIntegration: true,
contextIsolation: false,
enableRemoteModule: true
}
})
mainWindow.loadFile('index.html')
mainWindow.webContents.openDevTools()
ipcMain.on('msg',(event,arg)=>{
// console.log(event)
console.log(arg)
event.reply('msgMain','hello from main process')
})
})
renderer.js
const {ipcRenderer} = require('electron')
const {BrowserWindow} = require('electron').remote
window.addEventListener('DOMContentLoaded', () => {
document.getElementById('send').addEventListener('click', () => {
ipcRenderer.send('msg', 'hello from renderer')
let subWindow = new BrowserWindow({
width: 400,
height: 300,
webPreferences: {
// 注入node模块
nodeIntegration: true
},
// 模态
modal: true
})
subWindow.loadFile('two.html')
})
ipcRenderer.on('msgMain', (event, arg) => {
// console.log(event)
console.log(arg)
})
})
效果
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦