- Add Electron main process with developer tools support - Create preload script for secure context bridge - Configure electron-builder for packaging - Update Vite config for Electron compatibility (base: './') - Add environment variable support for API host configuration - Fix i18n to use relative paths for Electron file protocol - Restore multi-port backend architecture (8081-8085) - Add enhanced backend startup script with port checking - Update package.json with Electron dependencies and build scripts 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
const { contextBridge, ipcRenderer } = require('electron');
|
|
|
|
// 暴露安全的 API 给渲染进程
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
// 获取后端端口
|
|
getBackendPort: () => ipcRenderer.invoke('get-backend-port'),
|
|
|
|
// 获取应用版本
|
|
getAppVersion: () => ipcRenderer.invoke('get-app-version'),
|
|
|
|
// 获取平台信息
|
|
getPlatform: () => ipcRenderer.invoke('get-platform'),
|
|
|
|
// 重启后端
|
|
restartBackend: () => ipcRenderer.invoke('restart-backend'),
|
|
|
|
// 文件对话框
|
|
showSaveDialog: (options) => ipcRenderer.invoke('show-save-dialog', options),
|
|
showOpenDialog: (options) => ipcRenderer.invoke('show-open-dialog', options),
|
|
|
|
// 监听后端事件
|
|
onBackendStarted: (callback) => {
|
|
ipcRenderer.on('backend-started', (event, data) => callback(data));
|
|
},
|
|
|
|
onBackendLog: (callback) => {
|
|
ipcRenderer.on('backend-log', (event, data) => callback(data));
|
|
},
|
|
|
|
onBackendError: (callback) => {
|
|
ipcRenderer.on('backend-error', (event, data) => callback(data));
|
|
},
|
|
|
|
// 监听更新事件
|
|
onUpdateAvailable: (callback) => {
|
|
ipcRenderer.on('update-available', () => callback());
|
|
},
|
|
|
|
onUpdateDownloaded: (callback) => {
|
|
ipcRenderer.on('update-downloaded', () => callback());
|
|
},
|
|
|
|
// 移除事件监听器
|
|
removeAllListeners: (channel) => {
|
|
ipcRenderer.removeAllListeners(channel);
|
|
},
|
|
|
|
// 环境检测
|
|
isElectron: true,
|
|
isDev: process.env.NODE_ENV === 'development',
|
|
});
|
|
|
|
// 添加一个标识,让渲染进程知道这是 Electron 环境
|
|
window.IS_ELECTRON = true; |