electron中的IPC通信及性能进阶技巧_javascript技巧

文章编号:1029 技术教程 2026-02-04 electron IPC通信 electron IPC

场景:触发操作无需返回值(如修改窗口标题)。

// 渲染进程(通过预加载脚本暴露API) window.electronAPI.setTitle('新标题'); // 预加载脚本(preload.js) contextBridge.exposeInMainWorld('electronAPI', { setTitle: (title) => ipcRenderer.send('set-title', title) }); // 主进程 ipcMain.on('set-title', (event, title) => { const win = BrowserWindow.fromWebContents(event.sender); win.setTitle(title); });

关键点:使用 ipcRenderer.send + ipcMain.on 组合。

场景:需等待主进程返回结果(如读取文件)。推荐方案invoke/handle(异步Promise风格)

// 渲染进程 const data = await window.electronAPI.readfile('demo.txt'); // 预加载脚本暴露方法 readFile: (path) => ipcRenderer.invoke('read-file', path) // 主进程 ipcMain.handle('read-file', async (event, path) => { return fs.promises.readFile(path, 'utf-8'); });

替代方案send/reply(传统回调,需手动管理事件)。

场景:实时通知(如系统事件、后台任务完成)。

// 主进程 mainWindow.webContents.send('update-counter', 1); // 渲染进程(通过预加载脚本监听) window.electronAPI.onUpdateCounter((value) => { console.log('计数更新:', value); }); // 预加载脚本注册监听器 onUpdateCounter: (callback) => { ipcRenderer.on('update-counter', (event, value) => callback(value)); }

注意:需通过 webContents 指定目标窗口。

场景:极少需阻塞渲染进程的场景(如小型配置读取)。

// 渲染进程 const reply = ipcRenderer.sendSync('sync-message', 'ping'); // 主进程 ipcMain.on('sync-message', (event, arg) => { event.returnValue = 'pong'; });

风险:阻塞渲染线程导致页面卡顿。

必要性:防止渲染进程直接访问Node.js API,减少攻击面。

// 创建窗口时配置 new BrowserWindow({ webPreferences: { contextIsolation: true, // 默认启用 preload: path.join(__dirname, 'preload.js') } });

预加载脚本作用:唯一安全桥接,仅暴露必要API。

webPreferences: { nodeIntegration: false // 禁止渲染进程直接调用Node模块 }

原则:主进程始终校验传入数据。

ipcMain.handle('write-file', (event, { path, content }) => { if (typeof path !== 'string' || !isValidPath(path)) { throw new Error('非法路径'); } // 执行写入... });

// 主进程发送文件流 const readStream = fs.createReadStream('large-video.mp4'); mainWindow.webContents.send('video-stream', readStream);

    批处理示例:合并渲染进程的多次状态更新请求。

    useEffect(() => { ipcRenderer.on('event', handler); return () => ipcRenderer.off('event', handler); }, []);

    到此这篇关于electron中的IPC通信的文章就介绍到这了,更多相关electron IPC通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


    本文地址: https://www.earthnavs.com/jishuwz/5658eb750e1c05259a08.html
    全局中部横幅
    中国工商银行中国网站

    工商银行金融服务全面介绍,投资理财信息丰富全面,在线交易方便快捷,满足客户专业化、多元化、人性化的金融服务需求,打造集业务、信息、交易、购物、互动于一体综合性金融服务平台。

    文章信息

    AT导航(www.atdh.cn)为您提供免费网站收录,以及网址大全库的建立,旨在为用户提供高效便捷的网址收录和查询服务,同时提供最全的优秀名站导航。

    站长收录网

    站长目录,是一个流量互增的自动外链平台,可以给你网站增加反向链接,加快百度收录,是您迅速提升网站流量的网络推广必备工具。

    神烦网络验证平台

    神烦,是一款云服务系统,有各类网络服务应用可以直接使用,能轻松开发自己的云应用,轻松实现多种网络服务,支持文件存储、直链下载,网络数据库、ERP应用;SDK中提供COM、DLL、以及多语言接入实例,甚至是GET、POST接口,可与任意开发语言通讯

    中青在线

    中青在线:中国青年报官网24小时中青报。宗旨:推动社会进步服务青年成长。中国青年的主流新闻网。

    Alibaba

    AlibabaCloudisoneoftheworld

    QQ空间

    QQ空间(Qzone)是拥有数亿用户的社交网络,是QQ用户的网上家园,是腾讯集团的核心平台之一。您可以玩游戏、玩装扮、上传照片、写说说、写日志,黄钻贵族还可以免费换装并拥有多种特权。QQ空间同时致力于建设腾讯开放平台,和第三方开发商、创业者一起为亿万中国网民提供卓越的、个性化的社交服务。

    知识导航网

    【知识导航网】每日聚合10,000+权威知识资源,涵盖学术论文、行业研究报告、职业技能课程及AI工具库,精准覆盖人工智能、商业管理、教育心理等18大领域。提供智能分类检索+个性化推荐系统,3秒定位目标资料,支持PDF/视频/数据集多格式下载。立即体验,让知识获取效率提升200%!

    候鸟号

    候鸟号致力于做一个正经的财经资讯平台,证券、期货、基金等栏目专业分析讲解,帮助您成为一个优秀的财经爱好者。