当前位置: 首页 > news >正文

北京网站建设公司兴田德润实惠个人怎么做市场推广

北京网站建设公司兴田德润实惠,个人怎么做市场推广,常见的跨境电商平台有哪些?,如何推广网站?📡 深入理解 Electron 的 IPC 通信机制:主渲染进程消息传递实战 在 Electron 中,应用由两部分组成: 主进程(Main Process):负责创建和管理窗口,控制应用生命周期。渲染进程&#x…

📡 深入理解 Electron 的 IPC 通信机制:主渲染进程消息传递实战

在 Electron 中,应用由两部分组成:

  • 主进程(Main Process):负责创建和管理窗口,控制应用生命周期。
  • 渲染进程(Renderer Process):负责渲染 UI,每个窗口独立运行,基于 Chromium。

由于这两个进程是相互隔离的,它们之间的通信就显得尤为重要,Electron 提供了 IPC(Inter-Process Communication,进程间通信)机制,帮助它们高效、安全地进行消息传递。


🧠 IPC 模块简介

Electron 提供了两个核心模块用于 IPC 通信:

模块所在进程作用
ipcMain主进程监听渲染进程发送的消息
ipcRenderer渲染进程向主进程发送消息

此外,为了增强安全性,自 Electron 12+ 推荐使用 contextBridgepreload.js 实现隔离通信。


📦 场景准备:主进程与渲染进程通信实例

📁 项目结构简要

my-electron-app/
├── main.js          # 主进程入口
├── preload.js       # 渲染进程预加载脚本
├── index.html       # 页面 UI
├── renderer.js      # 渲染进程逻辑
├── package.json

🧩 主 → 渲染:主进程发送消息

main.js

const { app, BrowserWindow, ipcMain } = require('electron');
const path = require('path');function createWindow() {const win = new BrowserWindow({width: 800,height: 600,webPreferences: {preload: path.join(__dirname, 'preload.js'),}});win.loadFile('index.html');// 模拟 3 秒后主进程发消息给渲染进程setTimeout(() => {win.webContents.send('main-to-render', '你好,来自主进程的数据!');}, 3000);
}app.whenReady().then(createWindow);

preload.js

const { contextBridge, ipcRenderer } = require('electron');contextBridge.exposeInMainWorld('electronAPI', {onMainMessage: (callback) => ipcRenderer.on('main-to-render', (event, data) => callback(data))
});

renderer.js(在 HTML 中通过 <script> 引入)

window.electronAPI.onMainMessage((data) => {document.getElementById('msg').innerText = `收到主进程消息:${data}`;
});

index.html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>IPC 示例</title></head>
<body><h2 id="msg">等待主进程消息...</h2><script src="renderer.js"></script>
</body>
</html>

🔄 渲染 → 主进程:用户触发事件发送消息

renderer.js(新增按钮事件)

document.getElementById('sendBtn').addEventListener('click', () => {window.electronAPI.sendMessageToMain('Hello from renderer!');
});

preload.js

contextBridge.exposeInMainWorld('electronAPI', {sendMessageToMain: (msg) => ipcRenderer.send('render-to-main', msg),onMainMessage: (callback) => ipcRenderer.on('main-to-render', (event, data) => callback(data))
});

main.js

ipcMain.on('render-to-main', (event, msg) => {console.log('渲染进程发来的消息:', msg);
});

index.html(增加按钮)

<button id="sendBtn">发送消息到主进程</button>

🔐 为什么要用 preload + contextBridge?

Electron 推荐启用 contextIsolation 安全隔离,直接在渲染页面里访问 ipcRenderer 会被禁止,所以我们必须通过 preload.js 暴露安全接口。

优点:

  • 保证 window 对象的干净与安全;
  • 防止第三方脚本攻击;
  • 符合官方最佳实践。

📬 常见 IPC API 汇总

API说明
ipcRenderer.send(channel, data)渲染进程 → 主进程,异步发送
ipcMain.on(channel, callback)主进程接收消息并处理
ipcRenderer.invoke() / ipcMain.handle()支持异步 Promise 风格调用
webContents.send(channel, data)主进程 → 渲染进程发送
ipcRenderer.on(channel, callback)渲染进程接收主进程消息

💡 实战技巧

  • 推荐使用 invoke/handle 进行带返回值的请求处理,适合表单数据交互、数据库访问等。
  • 如果有多个窗口,需根据 event.senderFramewebContents.id 精准控制发送。
  • 可使用 uuid 维护请求唯一性,实现双向完整通信。

✅ 总结

  • 主渲染进程间必须使用 IPC 通信;
  • 推荐使用 contextBridge + preload.js 实现安全通信;
  • 灵活使用 send/oninvoke/handle 实现双向交互;
  • 在大型项目中,建议封装消息协议或使用状态管理来统一通信逻辑。
http://www.dtcms.com/a/404444.html

相关文章:

  • 45. 跳跃游戏 II
  • pc端宣传网站开发做网站 怎么赚钱吗
  • Nginx 特性、配置与实战部署
  • 新乡微网站建设青岛网站建设铭盛信息
  • 建设信用卡在线海淘网站返现电子商务网站建设php
  • 企业网站页面甘洛网站建设
  • 网站开发解决方案wordpress打字不显示
  • 个人网站类型王烨超
  • 别人公司网站进不去个性化网站设计
  • 阿里云网站怎么备案域名解析网站建设与管理自考重点
  • 网站关键词描述字数凡客小程序官方
  • 松江手机网站开发wordpress 标签链接地址
  • 中国石油工程建设有限公司网站宜宾建设局网站
  • photoshop制作网站海报一般网站建设电话
  • 教做视频的网站优购物官方网站app
  • 高校校园网站建设与运行go生物网站做蛋白定位
  • 各大网站开发的区块链123上网
  • 做网站都需要建哪些文件夹长春是几线城市2020排名
  • 杭州网站建设seo网络广告营销案例有哪些
  • 网站开发注册个体工商广南网站建设
  • 网站建设小江网页设计用哪个网站做简历更好
  • 大连网站设计公司百度标注平台怎么加入
  • 佛山外贸建站免费企业建站模板
  • 企业网站和信息化建设金蝶搜索引擎技术优化
  • 【Proteus仿真】AT89C51单片机串行数据转换为并行仿真
  • 做动态图网站有哪些专业seo优化推广
  • 域名如何做网站策划公司取名字大全
  • Linux 虚拟机软件 VMware Workstation Pro 安装CentOS的相关说明和操作
  • 关于网站建设的参考文献做一些网站犯法么
  • 个人网站可以如果做淘宝客成都做网站设