ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

electron 主进程与渲染进程通信的具体教程。

2020-12-09 10:33:30  阅读:182  来源: 互联网

标签:教程 ipcRenderer IPCHandler sendBridge active electron context 进程 msg


1:渲染层事件中心

 
  1. const ipcRenderer = require('electron').ipcRenderer;

  2. const sendBridge = (msg = { active: '', data: {} }) => {

  3. return new Promise((resolve, reject) => {

  4. ipcRenderer.on(msg.active, (event, arg) => {

  5. resolve(arg);

  6. });

  7. console.log('8>>>bridge.js', msg);

  8. ipcRenderer.send(msg.active, msg);

  9. });

  10. };

  11. export default sendBridge;

1.2 渲染层 事件中心注册

 
  1. import Vue from 'vue';

  2.  
  3. import sendBridge from './events/bridge';

  4.  
  5. Vue.prototype.$sendBridge = sendBridge;

 

2:主进程 接收并处理

index.js 注册IPCHandler

 
  1. import IPCHandler from './IPCHandler';

  2. let context = {}; // 全局上下文

  3. context.app = app;

  4. context.isDev = process.env.NODE_ENV !== 'production';

  5. context.ipcHandler = new IPCHandler(context);

IPCHandler.js

 
  1. const { ipcMain } = require('electron');

  2. class IPCHandler {

  3. constructor (context) {

  4. this.mContext = null;

  5. this.mContext = context;

  6. // 通讯录

  7. ipcMain.on('onInsertAllContacts', this.onInsertAllContacts.bind(this));

  8. }

  9. async onInsertAllContacts (event, args, userInfo) {

  10. console.log(38, event, args);

  11. event.sender.send(args.active, { active: args.active, result });

  12. }

  13. }

  14. export default IPCHandler;

3:渲染层 调用

 
  1. this.$sendBridge({active: 'onInsertAllContacts', data: []}).then(res => {

  2. });

 

 

总体思路:

页面组件 (active) =》 事件中心(ipcRenderer active) =》主进程接收中心(ipcMain active)=》【主进程业务处理】=》主进程接收中心(ipcRenderer callback)=》页面组件 (active,callback)

另外本人这里有套关于小白学习的大量资料,有兴趣的同学可以点击这里

标签:教程,ipcRenderer,IPCHandler,sendBridge,active,electron,context,进程,msg
来源: https://blog.csdn.net/weixin_51504726/article/details/110916627

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有