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 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构