Jiang's Tech Journal

Jiang's Tech Journal

首页
分类
关于
Login →
Jiang's Tech Journal

Jiang's Tech Journal

首页 分类 关于
Login
  1. Home
  2. Electron
  3. [electron-ipc-demo] 基于 Proxy 实现的 ipc 演示

[electron-ipc-demo] 基于 Proxy 实现的 ipc 演示

0
  • Electron
  • Published at 2024-10-29
  • Read 87 times
Jiang
Jiang
Table of Contents
No Table of Contents

实现方式

  1. 首先需要在主进程注册 ipc 事件

ipcMain.handle('ipc', async (event, { action, args }) => {
  // 通过 cls-hooked 无感在调用链中传递 event
  return ipcHook.runAndReturn(() => {
    ipcHook.set('event', event)
    return ipc[action](...args)
  })
})

以上使用 cls-hooked 在调用链中传递 event,避免需要显式传递 event。

  1. 在入口文件中初始化 ipc

ipc.init()
  1. 在渲染进程中使用 proxy 调用 ipc

// 直接通过 import 获得 ipc 类型
export const ipc: import('../../main/ipc').Ipc = new Proxy(
  {},
  {
    get(_, action: string) {
      return async (...args: any[]) => {
        return await window.electron.ipcRenderer.invoke('ipc', {
          action,
          args
        })
      }
    }
  }
) as any

以上。

https://github.com/lblblong/electron-ipc-demo?tab=readme-ov-file

下载链接:https://download.jiang.in/s/mOsK?password=bsxu0h

Related Posts

[electron] 一个优雅简单的electron-ipc管理示例

布布子写的electron-ipc管理示例。 Github:https://github.com/ybubuzi/violet-electron-ipc 离线文件:https://download.jiang.in/f/DJS3/violet-electron-ipc-main.zip

electron、nest的权限管理

electron部分

Electron界面嵌入其他exe程序

import { app, BrowserWindow } from 'electron'; import path from 'path'; import { exec, spawn } from 'child_process'; import koffi from 'koffi'; import

electron使用webview 链接跳转,阻止创建新窗口

//入口文件 <webview src="https://www.baidu.com/" allowpopups ></webview> const { app, } = require("electron"); //监听webview新建的窗口 app.on(

Sqlite3打包后无法运行,报Cannot find module sqlite3

删除node_modules,重新运行npm i 运行npm install出现vs未找到问题 vs2015_构建工具 使用vs_installer下载安装C++ 桌面开发组件 在右侧列表中选定windows sdk,注意版本,该文编写时安装sdk版本为10.0.2

Electron终端中文乱码解决方案

在启动命令之前添加chcp 65001解决electron控制台下打印中文乱码 "dev": "chcp 65001 && electron-vite dev"

Table of Contents
No Table of Contents
Copyright © 2024 your company All Rights Reserved. Powered by Halo.