继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

electron 笔记 02 进程间通讯

khl2016
关注TA
已关注
手记 4
粉丝 0
获赞 0

主进程与渲染进程

图片描述

方式一 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)
    })
})

效果

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP