// 1. main.js: Configure preload and handle IPC events
const { app, BrowserWindow, ipcMain } = require('electron')
const path = require('path')
const fs = require('fs')
function createWindow() {
let win = new BrowserWindow({
webPreferences: {
preload: path.resolve(__dirname, './preload.js')
}
})
ipcMain.on('save-file', (event, data) => {
fs.writeFileSync('D:/hello.txt', data)
})
ipcMain.handle('read-file', () => {
return fs.readFileSync('D:/hello.txt').toString()
})
win.loadFile('./pages/index.html')
}
// 2. preload.js: Expose API to renderer
const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('myAPI', {
saveFile: (data) => ipcRenderer.send('save-file', data),
readFile: () => ipcRenderer.invoke('read-file')
})
// 3. render.js: Call the exposed API
window.myAPI.saveFile('Hello from renderer')
window.myAPI.readFile().then(content => console.log(content))