Skip to content

go 1.20.4 ee-go 1.3.0

go 凭借着简单、高效、跨平台等优势,迅速成为开发者最喜爱的语言之一。

electron-egg 深度集成了go,并通过 ee-go mod,让开发者非常方便的进程业务开发,而无需关注复杂的系统环境。

如果您将核心业务用go来开发,那么它将拥有堪比c#qt一样流畅的使用体验。

准备

  • 推荐 go 1.20.4
  • 注:go 1.20 是支持win7、macOS 10.x 的最后一个版本

下载安装

  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
git checkout -b demo-go remotes/origin/demo
  1. 安装 前端、electron、go 依赖
bash
# 根目录安装electron依赖
npm i

# 进入前端目录安装依赖
cd ./frontend 
npm i

# 先全局安装热重载 air
go install github.com/air-verse/air@v1.49.0
# 进入go目录安装依赖
cd ../go
go mod tidy

在electron中如何运行go的可执行程序

通过cross模块的API来启动。

API模式

创建go服务

javascript
// 文件 electron/service/cross.js
const { cross } = require('ee-core/cross');

async createGoServer() {
  // method 1: Use the default Settings
  //const entity = await cross.run(serviceName);

  // method 2: Use custom configuration
  const serviceName = "go";
  const opt = {
    // 程序名称,一般填写可执行程序名
    name: 'goapp',
    cmd: path.join(getExtraResourcesDir(), 'goapp'),
    directory: getExtraResourcesDir(),
    args: ['--port=7073'],
    // 程序退出时,是否退出electron应用
    appExit: true,
  }
  const entity = await cross.run(serviceName, opt);
  logger.info('server name:', entity.name);

  return;
}

跟随软件启动

如果你希望桌面软件运行时就启动go服务,有以下方式。

一:在预加载模块,直接引入并调用。

javascript
// 文件 electron/preload/index.js

/*************************************************
 ** preload为预加载模块,该文件将会在程序启动时加载 **
 *************************************************/
const { crossService } = require('../service/cross');

function preload() {
  // 直接调用
  crossService.createGoServer();
}

/**
* 预加载模块入口
*/
module.exports = {
  preload
}