「Electron-Egg」:跨平台桌面应用开发的新选择

107 阅读2分钟

在桌面应用开发领域,Electron 一直是主流方案之一。但如果直接使用 Electron,从项目初始化、目录结构、进程通信、打包升级、安全加固,到最终交付,往往要踩不少坑。

在前段时间调研桌面端方案的时候发现了 Electron-Egg,正是为了解决这些痛点而生。它的目标是让企业级桌面软件开发更加高效、稳定、可维护。


特征

Electron-Egg 提供了一系列“开箱即用”的能力,覆盖了桌面应用从开发到交付的各个环节:

  • 跨平台支持:一次开发,支持 Windows / macOS / Linux,包括国产操作系统(UOS、麒麟、统信等)。
  • 模块化架构:单业务流程/模块化/多任务(进程、线程、渲染进程),简化大型项目的开发。
  • 功能丰富:配置、通讯、插件、数据库、升级、打包、工具……应有尽有。
  • 安全加固:支持字节码加密、压缩和混淆加密。
  • 丰富 DEMO:框架自带多个功能演示,帮助快速上手。

技术栈

Electron-Egg 的核心技术栈大致如下:

  • 前端:理论上支持任何前端技术,例如 Vue、React、HTML 等。
  • 后端:基于 ElectronNode.js,结合 Egg.js 框架,保证稳定性和扩展性。
  • 通信机制:内置 IPC 通信方案,让前端和后端交互更顺畅。

官方案例应用

rq-1.png

aw-3.png

lol-zhanji.png


使用方法

  1. 安装依赖

    git clone https://github.com/dromara/electron-egg.git
    cd electron-egg
    npm install
    
  2. 启动开发环境

    npm run dev
    

    这会同时启动前端与 Electron 主进程,进入热更新开发模式。

  3. 构建与打包

    npm run build
    

    即可生成对应平台的安装包。

  4. 接入前端框架frontend/ 目录中,可以替换为自己熟悉的 Vue / React 项目。

  5. 通信

    • 单向通信

      // 定义通信频道,即路由
      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, '参数')
      

相关链接


总结

相比于裸用 Electron,Electron-Egg 更像是一个“企业级桌面应用脚手架”。它帮你打理了项目架构、通信、安全、打包、更新等一系列复杂问题,让开发者能专注于业务逻辑和前端界面。