本技能为 Electron 桌面应用开发专家,定位是用 electron-vite + TypeScript + React 构建跨平台桌面应用,并覆盖 IPC 通信、窗口管理、原生功能集成、打包分发等全栈开发环节。
【快速开始】使用内置脚本创建最佳实践 Electron 项目: python "C:/Users/Administrator/.claude/skills/electron-app-dev/scripts/create_electron_app.py" my-app cd my-app npm install npm run dev 生成项目包含 electron-vite(全进程极速热更新)、TypeScript + React(类型安全开发)、contextBridge 安全 IPC 模式、electron-builder 打包配置。
【核心安全原则】强制以下 webPreferences 配置:preload 指向 '../preload/index.js'、contextIsolation: true(必须为 true)、nodeIntegration: false(必须为 false)、sandbox: true(推荐开启)。contextIsolation 隔离 preload 脚本与渲染器,nodeIntegration 关闭防止渲染器直接访问 Node.js,sandbox 进一步限制渲染器进程能力。
【IPC 通信模式】唯一正确方式是 contextBridge + 白名单。Preload 中定义 SEND_CHANNELS(如 ['app-ready'])与 INVOKE_CHANNELS(如 ['get-app-info','save-file']),通过 contextBridge.exposeInMainWorld('electronAPI', {...}) 暴露 send 与 invoke,仅允许白名单内的 channel,非法 channel 返回 rejected Promise。主进程侧需用 validateSender(event.senderFrame) 校验来源(允许 localhost、yourdomain.com 或 file: 协议),再处理 ipcMain.handle('get-app-info', ...) 等调用。
【常见坑与解决方案】1)白屏:打包后白屏多见于协议或路径问题,需根据 app.isPackaged 区分处理,开发环境 loadURL('http://localhost:5173'),生产环境 loadFile(path.join(__dirname,'../renderer/index.html'))。2)内存泄漏:IPC 监听器在 useEffect 清理函数中必须 removeListener。3)窗口状态不保存:使用 electron-store 记录 window 的 x/y/width/height,在 close 事件中保存。4)DevTools 管理:仅在 process.env.NODE_ENV === 'development' 时 openDevTools,或通过 globalShortcut 注册 CommandOrControl+Shift+I 切换。
【性能优化】窗口按需懒加载并按关闭事件置 null 释放内存;用 BrowserView 替代多窗口节省内存;IPC 调用使用 lodash debounce 防抖;大文件用 fs.createReadStream 分块并通过 event.sender.send('file-chunk', chunk) 流式传输,避免一次性 readFileSync 读入内存。
【调试技巧】提供 VS Code 的 launch.json 配置,分别调试主进程(node 类型、runtimeExecutable 指向 electron)与渲染进程(chrome 类型、url 指向 localhost:5173);常用 Chrome DevTools 快捷键(Ctrl+Shift+I/J/C、F1);主进程日志使用 winston 输出到文件与控制台;内存监控用 process.cpuUsage() 与 process.memoryUsage() 定期采样,并给出检测持续增长疑似泄漏的示例。
【跨平台注意事项】使用 os.platform() 区分 win32/darwin/linux;文件路径用 path.join 与 app.getPath('userData'),避免硬编码分隔符;原生模块用 electron-rebuild 在 postinstall 编译;托盘图标在 Windows 用 .ico、Mac/Linux 用 .png,macOS 需设置模板图标。
【速查任务】给出创建窗口、系统托盘(Tray + Menu.buildFromTemplate)、文件对话框(dialog.showOpenDialog)的代码示例;给出 electron-vite 项目结构(electron/main/index.ts、electron/preload/index.ts 与 index.d.ts、src/main.tsx、out/、electron.vite.config.ts、electron-builder.yml);打包命令包括 npm run dev、npm run build 以及 npm run build:win / build:mac / build:linux。
【参考文档】IPC 通信模式与安全验证见 references/ipc-patterns.md;窗口创建、控制、多窗口与状态持久化见 references/window-management.md;系统托盘、菜单、通知、文件对话框见 references/native-features.md;electron-builder 配置、代码签名、自动更新见 references/packaging.md。
【适用场景】使用 electron-vite + TypeScript + React 搭建 Electron 跨平台桌面应用的开发、调试、优化与打包发布。
【限制】未提供该技能的收费、价格、授权方式与官方支持信息;具体脚本路径 'C:/Users/Administrator/.claude/skills/electron-app-dev/scripts/create_electron_app.py' 为资料原始内容,实际使用需按本机路径调整。