Skip to content

框架架构

v5 版本

单业务进程 + 模块化 + 多任务,适合小/中/大项目, 支持 js/ts、cjs模块,esm 模块,热重载,兼顾开发效率 和 后期维护。

进程

框架有三种进程

  • ee主进程:业务逻辑
  • ee渲染进程:软件界面UI
  • ee任务进程:耗时业务

通信

  • ipc:前端 ⇋ 业务层 (双向通信)
  • http: 前端、命令行、浏览器 ⇋ 业务层 (单向通信)
  • socket:前端 ⇋ 业务层 (双向通信)

本地存储

  • sqlite数据库

核心包

ee-bin 提供命令行工具,开发环境使用。

ee-core 提供框架核心功能。

ee-go (可选) 提供 go 语言支持。

功能划分

软件界面

frontend 目录,开发软件界面;支持任意前端技术,如vuereactangularhtmlvite

业务逻辑

electron 目录,开发业务逻辑;常规业务逻辑、调用操作系统api、访问远程服务器api等

go 目录(可选),开发业务逻辑;利用go的跨平台、高性能,大幅提升软件体验。

开发者模式

选择开发语言

v5 版本,支持 js、cjs模块,esm 模块,提供两种开发语言。推荐先体验 demo 项目,熟悉框架基础功能

  1. 下载项目
bash
# gitee
git clone https://gitee.com/dromara/electron-egg.git

# github
git clone https://github.com/dromara/electron-egg.git
  1. (可选) 在 主分支 或 检出demo分支
bash
# ts 版本
git checkout -b demo remotes/origin/demo-ts
# js 版本
git checkout -b demo remotes/origin/demo-js

安装依赖

bash
# 根目录,安装 electron 依赖
npm i
# 构建 sqlite(如果不需要请删除 demo 中 ./service/database 文件 和 导入代码)
npm run re-sqlite

# 进入【前端目录】安装 frontend 依赖
cd frontend 
npm i

详细说明:sqlite安装

启动

开发环境下,渲染进程加载是前端服务,生产环境 加载的是 ./public/dist/ 代码。

主进程无论开发环境,还是生产环境,加载的都是 ./public/electron/ 中构建后的 js 代码。

方式一

同时启动 前端 & 主进程,可配置主进程热重载。

  • 适合后期开发阶段的快速测试,前端与主进程热重载互不影响,减少启动时间。

配置 package.json

javascript
  "scripts": {
    // 同时启动
    "dev": "ee-bin dev",
    // 构建前端/主进程,并加密
    "build": "npm run build-frontend && npm run build-electron && ee-bin encrypt",
    // 预发环境,打包前测试
    "start": "ee-bin start",
    // 分开启动
    "dev-frontend": "ee-bin dev --serve=frontend",
    "dev-electron": "ee-bin dev --serve=electron",
  }
bash
npm run dev

TIP

注1:如果启动的前端服务不是:http://localhost:8080/ 请先配置:cmd/bin.js 文件中的 frontend 对象

注2:如果打包后运行白屏,检查基础路径,检查资源是否移动,检查路由是否为 hash 模式。

方式二

分别启动前端服务,主进程electron服务,可关闭主进程热重载。

  • 适合前期开发阶段,避免大量文件改动,而出现的频繁重启服务干扰。
bash
# 打开两个终端
npm run dev-frontend

npm run dev-electron

调试

请查看:debug

构建

构建分为 前端构建、主进程构建、代码加密、go/python 语言构建,打包可执行程序。

  • 可自由组合命令,符合你的开发习惯

配置 package.json

javascript
  "scripts": {
    // 构建前端/主进程,并加密
    "build": "npm run build-frontend && npm run build-electron && ee-bin encrypt",
    // 构建前端
    "build-frontend": "ee-bin build --cmds=frontend && ee-bin move --flag=frontend_dist",
    // 构建主进程
    "build-electron": "ee-bin build --cmds=electron",
    // 加密 
    "encrypt": "ee-bin encrypt",
    // 构建go
    "build-go-w": "ee-bin move --flag=go_static,go_config,go_package && ee-bin build --cmds=go_w",
    "build-go-m": "ee-bin move --flag=go_static,go_config,go_package,go_images && ee-bin build --cmds=go_m",
    "build-go-l": "ee-bin move --flag=go_static,go_config,go_package,go_images && ee-bin build --cmds=go_l",
    // 构建python
    "build-python": "ee-bin build --cmds=python && ee-bin move --flag=python_dist",
    // 生成可执行程序
    "build-w": "ee-bin build --cmds=win64",
    "build-we": "ee-bin build --cmds=win_e",
    "build-m": "ee-bin build --cmds=mac",
    "build-m-arm64": "ee-bin build --cmds=mac_arm64",
    "build-l": "ee-bin build --cmds=linux",
  }

Demo

框架集成了许多功能demo示例,方便开发者快速入门。查看demo文档

生成软件

见教程:构建可执行程序