electron渲染进程与主进程之间通信

首先main.js中通过preload进行预加载脚本 __dirname字符串指向当前正在执行的脚本的路径#

const { app, BrowserWindow } = require('electron');//引入electron
const path = require('path');
let win;
let windowConfig = {
  width: 300,
  height: 600,
  minWidth: 300,
  webPreferences: {
    nodeIntegration: true,// 是否集成 Nodejs
    preload: path.join(__dirname,'preload.js')
  },
  transparent: true,
  frame: false,
  // alwaysOnTop: true,
  resizable: true,//可否缩放
  movable: true//可否移动
};//窗口配置程序运行窗口的大小
function createWindow() {
  win = new BrowserWindow(windowConfig);//创建一个窗口
  win.loadURL(`file://${__dirname}/web/dist/index.html`);//在窗口内要展示的内容index.html 就是打包生成的index.html
  win.webContents.openDevTools();  //开启调试工具
  win.on('close', () => {
    //回收BrowserWindow对象
    win = null;
  });
  win.show()

}
app.on('ready', createWindow);
app.on('window-all-closed', () => {
  app.quit();
});

app.on('activate', () => {
  if (win == null) {
    createWindow();
  }
});

const ipcMain = require('electron').ipcMain;
ipcMain.on('closeApp', function () {
  app.quit();
});
ipcMain.on('window-min', function () {
  win.minimize();
});

preload.js#

const { contextBridge, ipcRenderer } = require('electron')

contextBridge.exposeInMainWorld('electronAPI', {
    minApp: () => ipcRenderer.send('window-min'),
    closeApp:() => ipcRenderer.send('closeApp')
})

然后页面中通过window.electronAPI访问定义的方法即可#

作者:whh666

出处:https://www.cnblogs.com/whh666/p/17628877.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   资深if-else侠  阅读(208)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示