如题,已知扩展是基于多进程的模式实现,渲染与插件主逻辑并不在同一个进程里面。现在有个需求需要从主进程通知属性检查器面板进行刷新,找了一圈没找到有效的写法。有大佬能帮忙答疑一下不?
找到办法了,安装 electron 依赖库后可以使用 ipcMain 与 ipcRenderer 对象进行通信。
安装:
npm install electron --save-dev
如果访问超时可尝试使用国内源:
# 临时使用淘宝镜像
npm install electron --save-dev --electron_mirror=https://npmmirror.com/mirrors/electron/
主进程代码(扩展入口文件):
import { ipcMain } from 'electron';
// 初始化IPC监听
ipcMain.on('from-renderer', (event, message) => {
console.log('收到渲染进程消息:', message);
// 回复消息
event.sender.send('from-main', { response: '主进程已收到' });
});
渲染进程代码(属性检查器面板扩展):
// ... 其他代码保持不变 ...
import { ipcRenderer } from 'electron';
export function ready(this: PanelThis) {
// 监听主进程消息
ipcRenderer.on('from-main', (event, message) => {
console.log('收到主进程消息:', message);
});
}
export function close(this: PanelThis) {
// 移除监听
ipcRenderer.removeAllListeners('from-main');
// ... 原有关闭逻辑 ...
}
// 示例:发送消息到主进程
function sendToMain() {
ipcRenderer.send('from-renderer', {
type: 'custom-event',
data: '需要传递的数据'
});
}
