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
    全局中部横幅
    hao91收录网

    网站收录网,主要提供网站快速收录,快速上排名,站点权重提升,网站收录提交,网站收录工具,同时提供最全的优秀名站。

    学习资源分享

    158资源整合网:是一个学习资源整合平台,整合各类名师讲座视频、培训课程、培训视频教程下载,也是一个虚拟资源平台。

    666资源网

    666资源网提供最新最全的免费网站源码下载(公众号源码,小程序源码,php网站源码,DZ模板,帝国模板,棋牌游戏,H5网页游戏,dede模板,各种插件模板等),精品商业网站插件模版免费下载,建站教程和建站工具,为各位站长提供最新最全的的网站资源下载,打造专业的互联网精品资源为一体化的源码资源分享平台!

    FT中文网

    FT中文网是英国《金融时报》唯一的非英语网站,致力于向中国商业菁英和企业决策者及时提供来自全球的商业、经济、市场、管理和科技新闻,同时报道和评论对中国经济和全球商业真正重大且具影响力的事件并揭示事态的来龙去脉。

    PotPlayer中文网

    PotPlayer中文网是关于PotPlayer的中文网站,内容有PotPlayer下载,使用教程,插件,直播源,皮肤。PotPlayer支持网络上所有主流的视频音频格式文件,被誉为Windows平台上最优秀的免费影音全能格式播放器。

    CNTV

    该站点未添加描述description...

    百度智能云

    百度智能云致力于为企业和开发者提供全球领先的人工智能、大数据和云计算服务,加速产业智能化转型升级

    合肥自动化设备

    安徽鸣宇智能科技有限公司是专业从事非标自动化设备的研发、设计、制造加工销售为一体的技术密集型企业.鸣宇可以为客户提供最优的自动化解决方案、最高性价比的设备、最短交期及最优的服务.联系电话:王经理,17718106380.

    绿色资源网

    绿色资源网免费提供电脑常用软件,安卓手机app,手机游戏,苹果应用,mac软件等,励志打造全网最好最全的软件下载站.

    投融界|国内专业的一站式创业服务平台

    投融界(trjcn.com)是中国专业的合作平台,为您提供合作,天使合作,债权合作等信息,拥有超百万的合作机构、企业与个人用户入驻。专为中小微企业解决合作难问题。投融界通过线上+线下、标准化+个性化的服务体系,为客户提供针对性的合作信息对接和项目撮配服务,帮助客户实现成功对接合作。