1:渲染层事件中心
const ipcRenderer = require('electron').ipcRenderer;
const sendBridge = (msg = { active: '', data: {} }) => {
return new Promise((resolve, reject) => {
ipcRenderer.on(msg.active, (event, arg) => {
resolve(arg);
});
console.log('8>>>bridge.js', msg);
ipcRenderer.send(msg.active, msg);
});
};
export default sendBridge;
1.2 渲染层 事件中心注册
import Vue from 'vue';
import sendBridge from './events/bridge';
Vue.prototype.$sendBridge = sendBridge;
2:主进程 接收并处理
index.js 注册IPCHandler
import IPCHandler from './IPCHandler';
let context = {}; // 全局上下文
context.app = app;
context.isDev = process.env.NODE_ENV !== 'production';
context.ipcHandler = new IPCHandler(context);
IPCHandler.js
const { ipcMain } = require('electron');
class IPCHandler {
constructor (context) {
this.mContext = null;
this.mContext = context;
// 通讯录
ipcMain.on('onInsertAllContacts', this.onInsertAllContacts.bind(this));
}
async onInsertAllContacts (event, args, userInfo) {
console.log(38, event, args);
event.sender.send(args.active, { active: args.active, result });
}
}
export default IPCHandler;
3:渲染层 调用
this.$sendBridge({active: 'onInsertAllContacts', data: []}).then(res => {
});
总体思路:
页面组件 (active) =》 事件中心(ipcRenderer active) =》主进程接收中心(ipcMain active)=》【主进程业务处理】=》主进程接收中心(ipcRenderer callback)=》页面组件 (active,callback)
另外本人这里有套关于小白学习的大量资料,有兴趣的同学可以点击这里。