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

怎么做倒计时网站如何让自己的网站被百度收录

怎么做倒计时网站,如何让自己的网站被百度收录,惠州做网站建设,全球最大的c2c平台📡 深入理解 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/wzjs/453510.html

相关文章:

  • 做微课常用的网站有哪些网站排名软件
  • 门户网站开发请示在线营销推广
  • 日照seo顾问北京seo网站优化公司
  • 郑州市最新疫情东莞市网络seo推广服务机构
  • 资源网站后台系统seo优化运营专员
  • 营销型网站的概念网络推广的途径有哪些
  • 山东青岛网站建设seo优化北京出大大事了
  • 做框架表格网站淘宝数据分析工具
  • 地方门户网站还能做吗百度权重工具
  • 做新闻网站编辑需要什么手机上如何制作自己的网站
  • 库尔勒市住房和城乡建设委员会网站seo专员岗位职责
  • 2昌平区网站建设武汉seo网站排名优化公司
  • 专业做网站流程国际最新新闻
  • 十八把网站做扇子网络推广与优化
  • 国家住房与城乡建设部网站首页天津seo推广优化
  • 只做域名跳转和关停网站郑州seo外包顾问
  • 网站建设公司的商业模式谷歌推广哪家公司好
  • 软件工程项目开发流程百度seo优化是做什么的
  • 京东网站建设哪家好百度平台客服
  • 手机微网站开发的目的和意义如何免费引流推广
  • 网站建设用的软件今天有什么新闻
  • 微信公众平台开发模式网站关键词优化推广哪家好
  • 常州市网站建设公司项目外包平台
  • 设计网站推荐知乎东莞网络推广
  • 徐州做网站谁家最专业优化大师官方网站
  • 网络教育做的好的网站网络营销的基本特征
  • 给女朋友做网站的素材竞价排名推广
  • 昆明网站搭建网页怎么制作
  • 最好的做网站的公司国外域名购买
  • 怎么简化Wordpress欢迎页面北京seo顾问服务公司