在桌面应用开发领域,Electron 一直是主流方案之一。但如果直接使用 Electron,从项目初始化、目录结构、进程通信、打包升级、安全加固,到最终交付,往往要踩不少坑。
在前段时间调研桌面端方案的时候发现了 Electron-Egg,正是为了解决这些痛点而生。它的目标是让企业级桌面软件开发更加高效、稳定、可维护。
特征
Electron-Egg 提供了一系列“开箱即用”的能力,覆盖了桌面应用从开发到交付的各个环节:
- 跨平台支持:一次开发,支持 Windows / macOS / Linux,包括国产操作系统(UOS、麒麟、统信等)。
- 模块化架构:单业务流程/模块化/多任务(进程、线程、渲染进程),简化大型项目的开发。
- 功能丰富:配置、通讯、插件、数据库、升级、打包、工具……应有尽有。
- 安全加固:支持字节码加密、压缩和混淆加密。
- 丰富 DEMO:框架自带多个功能演示,帮助快速上手。
技术栈
Electron-Egg 的核心技术栈大致如下:
- 前端:理论上支持任何前端技术,例如 Vue、React、HTML 等。
- 后端:基于
Electron和Node.js,结合Egg.js框架,保证稳定性和扩展性。 - 通信机制:内置 IPC 通信方案,让前端和后端交互更顺畅。
官方案例应用
使用方法
-
安装依赖
git clone https://github.com/dromara/electron-egg.git cd electron-egg npm install -
启动开发环境
npm run dev这会同时启动前端与 Electron 主进程,进入热更新开发模式。
-
构建与打包
npm run build即可生成对应平台的安装包。
-
接入前端框架 在
frontend/目录中,可以替换为自己熟悉的 Vue / React 项目。 -
通信
-
单向通信
// 定义通信频道,即路由 const ipcApiRoute = { hello: 'controller/example/hello', } // 发送请求 // 该请求会访问 controller/example.js文件的hello函数 import { ipc } from '@/utils/ipcRenderer'; ipc.invoke(ipcApiRoute.hello, {name:'张三'}).then(r => { // r为返回的数据 conson.log(r); }) -
双向通信
# 定义通信频道,即路由 const ipcApiRoute = { ipcSendMsg: 'controller/example/ipcSendMsg', } // 避免重复监听,或者将 $ipc.on() 功能写到一个统一的地方,只加载一次 ipc.removeAllListeners(ipcApiRoute.ipcSendMsg); // 监听,接收 服务端 event.reply()发送的数据 ipc.on(ipcApiRoute.ipcSendMsg, (event, result) => { console.log('[ipcRenderer] [ipcSendMsg] result:', result); self.messageString = result; // 调用后端的另一个接口 event.sender.send(ipcApiRoute.hello, 'electron-egg'); }) // 发送请求到服务端 ipc.send(ipcApiRoute.ipcSendMsg, '参数')
-
相关链接
- GitHub 仓库:electron-egg
- 官方文档:github.com/dromara/ele…
总结
相比于裸用 Electron,Electron-Egg 更像是一个“企业级桌面应用脚手架”。它帮你打理了项目架构、通信、安全、打包、更新等一系列复杂问题,让开发者能专注于业务逻辑和前端界面。