zoukankan      html  css  js  c++  java
  • electron主进程与渲染进程的通信方式

    这篇笔记主要解决的问题是Electron的主进程与渲染进程之间的通信.
    

      

    使用ipcMain和ipcRenderer

      // 来自官方的示例
      const {ipcMain} = require('electron')
      ipcMain.on('asynchronous-message', (event, arg) => {
        console.log(arg) // prints "ping"
        event.sender.send('asynchronous-reply', 'pong')
      })
     
      ipcMain.on('synchronous-message', (event, arg) => {
        console.log(arg) // prints "ping"
        event.returnValue = 'pong'
      })
    

      

    要点:

    1. 渲染进程可以通过ipcRenderer向主进程发送消息
    2. 主进程通过ipcMain监听来自渲染进程的消息. 并根据消息类型执行不同的操作
    3. 主进程的回调方法包含eventarg两个参数. arg对象中保存了渲染进程传递的参数. 通过event.sender对象,主进程可以直接向渲染进程发送返回消息. 如果主进程执行的同步方法,还可以通过设置event.returnValue来获取返回值.

     

    使用 electron.remote 模块

    在渲染进程中,可以通过const {remote} = require('electron')来获取到remote对象. 通过这个对象可以允许渲染进程访问主进程的模块.

    const {BrowserWindow} = require('electron').remote;
    let win = new BrowserWindow({ 800, height: 600});
    win.loadURL('https://xxx.com');
    

      同样的,我们也可以通过remote对象访问到app对象。这样我们就可以访问到我们在主进程中挂载到electron.app对象上的方法。

    // 主进程
    const { app } = require('electron');
    const utils = require('./utils');
     
    app.utils = utils; // 将在 Electron 层实现的接口绑定到 app 上
    

      

    // 渲染进程
    const { remote } = require('electron');
    function() {
        // remote.app.utils 对象与主进程中的utils对象是一样的。
        remote.app.utils.test();
    }
    

      要点:
    通过remote对象,我们可以不必发送进程间消息来进行通信。但实际上,我们在调用远程对象的方法、函数或者通过远程构造函数创建一个新的对象,实际上都是在发送一个同步的进程间消息(官方文档 上说这类似于JAVA中的RMI)。
    也就是说,remote方法只是不用让我们显式的写发送进程间的消息的方法而已。在上面通过remote模块创建BrowserWindow的例子里。我们在渲染进程中创建的BrowserWindow对象其实并不在我们的渲染进程中,它只是让主进程创建了一个BrowserWindow 对象,并返回了这个相对应的远程对象给了渲染进程。

    electron入门级学习资料免费获取

  • 相关阅读:
    C#使用WINDOW
    赵四小姐从十六岁开始跟张学良。跟一年,属奸情;跟三年,算偷情;跟六十年,便成为千古爱情!
    Microsoft Visual Studio 2010(VS2010)正式版 CDKEY / SN:
    C#中byte[]与string的转换
    sqlserver waitfor time '10:00' waitfor delay '1:00' 时间延时 和 间隔
    免费下载 精英讲解
    在决定使用ClickOnce发布你的软件前,应该知道的一些事情
    Windows7下注册OCX的注意事项
    用命令行以最快速简单的方式搭建MySQL数据库
    设计模式探索系列之Bridge模式
  • 原文地址:https://www.cnblogs.com/alex96/p/12145534.html
Copyright © 2011-2022 走看看