Theme NexT works best with JavaScript enabled
0%

Electron进程模型

^ _ ^

主进程

  • Electron 运行 package.json 的 main 脚本的进程被称为主进程;
  • 每个应用只有一个主进程;
  • 管理原生 GUI,典型的窗口(BrowerWindow、Tray、Dock、Menu);
  • 管理渲染进程;
  • 控制应用生命周期(app)

渲染进程

  • 展示 Web 页面的进程称为渲染进程;
  • 通过 Node.js、Electron 提供的API可以和系统底层打交道;
  • 一个 Electron 应用可以有多个渲染进程。

进程间通信

目的

  • 通知事件
  • 数据传输
  • 共享数据

IPC模块通信

  • Electron提供了IPC通信模块,主进程的ipcMain和渲染进程的ipcRenderer
  • ipcMainipcRenderer都是EventEmitter对象

从渲染进程到主进程

Callback写法

  • ipcRenderer.send(channel, …args)
  • ipcMain.on(channel, handler)

Promise写法(Electron7.0之后)

  • ipcRenderer.invoke(channel, …args)
  • ipcMain.handle(channel, handler)

从主进程到渲染进程

ipcRenderer.on(channel, handler)
webContent.send(channel)

渲染进程间的通信

  • 通知事件
    • 通过主进程转发
    • ipcRenderer.sendTo
  • 数据共享
    • Web技术(localStorage、sessionStorage、indexedDB)
    • 使用remote(不推荐)