Electron 桌面应用集成
August 18, 2025 · View on GitHub
这个项目已经集成了 Electron,可以作为桌面应用运行。
功能特性
- 🖥️ 原生桌面应用体验
- 📁 本地文件读写支持(打开、保存)
- ⌨️ 完整的键盘快捷键
- 🍎 原生菜单栏支持
- 🔧 开发和生产环境支持
安装依赖
npm install
开发模式
启动开发服务器 + Electron
npm run electron:dev
这会同时启动 Vite 开发服务器和 Electron 应用。
仅启动 Electron(需要先启动开发服务器)
# 终端 1: 启动开发服务器
npm run dev
# 终端 2: 启动 Electron
npm run electron
构建桌面应用
构建应用
npm run build:electron
打包应用
npm run package
这会生成一个包含应用的可执行文件,位于 out/ 目录中。
制作安装包
# macOS 安装包
npm run make:mac
# Windows 安装包
npm run make:win
# Linux 安装包
npm run make:linux
# 所有平台安装包
npm run make:all
项目结构
mdeditor/
├── electron/ # Electron 相关文件
│ ├── main.cjs # 主进程文件
│ └── preload.cjs # 预加载脚本
├── dist/ # Vite 构建输出
├── out/ # Electron 打包输出
└── package.json # 项目配置
主要功能
文件操作
- 打开文件:
Cmd/Ctrl + O- 支持.md、.markdown、.txt等格式 - 保存文件:
Cmd/Ctrl + S- 自动保存到当前文件或选择新位置
菜单栏
- 文件: 打开、保存等文件操作
- 编辑: 文本编辑功能(撤销、重做、剪切、复制、粘贴、全选)
- 视图: 视图控制功能(重新加载、开发者工具、缩放、全屏)
- 帮助: 关于信息和 GitHub 链接
平台支持
- ✅ macOS (Intel + Apple Silicon)
- ✅ Windows (x64) 没测
- ✅ Linux (x64) 没测
开发说明
主进程 (main.cjs)
负责创建应用窗口、处理系统级事件、管理应用生命周期、文件对话框操作。
预加载脚本 (preload.cjs)
为渲染进程提供安全的 API 接口,实现主进程和渲染进程的通信:
saveFile: 保存文件操作onMenuOpenFile: 监听打开文件菜单事件onMenuSaveFile: 监听保存文件菜单事件
渲染进程 (Vue 应用)
通过 useElectron composable 与 Electron 主进程通信:
- 文件打开:接收文件内容并更新编辑器
- 文件保存:发送内容到主进程进行保存
- 状态管理:跟踪当前文件路径和修改状态
核心实现
文件打开流程
- 用户按
Cmd/Ctrl + O或点击菜单 - 主进程显示文件选择对话框
- 读取选中文件内容
- 通过 IPC 发送到渲染进程
- 渲染进程更新编辑器内容并设置当前文件路径
文件保存流程
- 用户按
Cmd/Ctrl + S或点击菜单 - 渲染进程发送内容到主进程
- 主进程显示保存对话框(如果没有当前文件路径)
- 写入文件并返回结果
- 渲染进程显示成功/失败通知