快速开始
# 框架架构
# v4 版本
单业务进程 + 模块化 + 多任务,适合小/中/大项目, 支持 js/ts、热重载,兼顾开发效率 和 后期维护。
# 进程
框架有三种进程
- ee主进程:业务逻辑
- ee渲染进程:软件界面UI
- ee任务进程:耗时业务
# 通信
- ipc:前端 ⇋ 业务层 (双向通信)
- http: 前端、命令行、浏览器 ⇋ 业务层 (单向通信)
- socket:前端 ⇋ 业务层 (双向通信)
# 本地存储
- sqlite数据库
# 核心包
ee-bin
提供命令行工具,开发环境使用。
ee-core
提供框架核心功能。
ee-go
(可选)
提供 go
语言支持。
# 功能划分
# 软件界面
frontend
目录,开发软件界面;支持任意前端技术,如vue
、react
、angular
、html
、vite
等
# 业务逻辑
electron
目录,开发业务逻辑;常规业务逻辑、调用操作系统api、访问远程服务器api等
go
目录(可选),开发业务逻辑;利用go的跨平台、高性能,大幅提升软件体验。
# 开发者模式
# 选择开发语言
v4版本提供 js + ts 两种开发语言。推荐先体验 demo 项目,熟悉框架基础功能
- 下载项目
# gitee
git clone https://gitee.com/dromara/electron-egg.git
# github
git clone https://github.com/dromara/electron-egg.git
- (可选) 在 主分支 或 检出demo分支
# js 版本
git checkout -b demo remotes/origin/demo
# ts 版本
git checkout -b demo remotes/origin/demo-ts
# 安装依赖
# 根目录,安装 electron 依赖
npm i
# 构建 sqlite(如果不需要请删除 demo 中 ./service/database 文件 和 导入代码)
npm run re-sqlite
# 进入【前端目录】安装 frontend 依赖
cd frontend
npm i
详细说明:sqlite安装
# 启动
开发环境下,渲染进程加载是前端服务,生产环境 加载的是 ./public/dist/
代码。
主进程无论开发环境,还是生产环境,加载的都是 ./public/electron/
中构建后的 js
代码。
注意
启动时,会加载一个 loading
页面(仅dev环境)。
# 方式一
同时启动 前端 & 主进程,可配置主进程热重载。
- 适合后期开发阶段的快速测试,前端与主进程热重载互不影响,减少启动时间。
配置 package.json
"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",
}
npm run dev
提示
注1:如果启动的前端服务不是:http://localhost:8080/ 请先配置:cmd/bin.js 文件中的 frontend
对象
注2:如果打包后运行白屏,检查基础路径,检查资源是否移动,检查路由是否为 hash 模式。
# 方式二
分别启动前端服务,主进程electron服务,可关闭主进程热重载。
- 适合前期开发阶段,避免大量文件改动,而出现的频繁重启服务干扰。
# 打开两个终端
npm run dev-frontend
npm run dev-electron
# (重要) 业务代码错误排查
使用 ts 开发
时,如果报错,请先检查 ./public/electron/
代码报错位置,然后再去 ./electron/
源代码中处理。因为
构建后的代码,错误代码位置与 ts 源码不同。
使用 js 开发
时, 可直接从 ./electron/
源代码中处理。
# 构建
构建分为 前端构建、主进程构建、代码加密、go/python 语言构建,打包可执行程序。
- 可自由组合命令,符合你的开发习惯
配置 package.json
"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文档
# 生成软件
见教程:构建可执行程序