在Go中使用Energy创建跨平台GUI应用

snxamdf · 2023-06-08 14:35:10 · 1605 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2023-06-08 14:35:10 的主题,其中的信息可能已经有所发展或是发生改变。

Energy 是Go基于CEF构建桌面应用的框架

简介

energy 是 Go 基于 CEF(Chromium Embedded Framework) 开发的框架,内嵌 CEF 二进制

使用 Go 和 Web 端技术 ( HTML + CSS + JavaScript ) 构建支持Windows, Linux, MacOS跨平台桌面应用

需要会前端技术栈和略懂Go语言

特性

  • 开发环境简单,编译速度快,只需要Go开发环境和Energy依赖的CEF二进制框架
  • 跨平台: 一套代码可以打包成 Windows, 国产UOS、Deepin、Kylin, MacOS, Linux
  • 语言职责
    • Go: Go负责窗口创建、CEF配置和功能实现、各种UI组件创建、系统低层调用,和JS处理不了的功能如: 文件流、安全加密、高性能处理等等,可作为纯后端开发
    • Web: HTML + CSS + JavaScript 负责客户端界面的功能, 做出任意你想要的界面,可作为纯前端开发
  • 前端技术: 支持主流前端框架例如:Vue、React、Angular, 或纯HTML+CSS等等
  • 事件驱动: 高性能事件驱动, 基于IPC通信,实现Go和Web端很方便功能调用以及数据交互

事件驱动 Go和Web交互

  • 在Go和Web技术基于IPC通信,可以在Go和Web交互数据、事件触发, 可以不使用 http 接口,就像调用语言本身函数一样简单
  • 在Go中定义JS绑定类型变量,提供给Web端JS使用,实现Go变量或结构对象数据同步
  • 在JS监听事件,在Go中触发JS事件,以达到Go调用JS函数和数据传递
  • 在Go监听事件,在JS中触发Go事件,以达到JS调用Go函数和数据传递

开发环境

基本需求

  • golang >= 1.18
  • energy 开发环境

使用 energy 命令行工具自动安装开发环境

获取 energy 项目,或直接使用预编译命令行工具 下载地址

  1. go get github.com/energye/energy

进入 energy 命令行目录

  1. cd energy/cmd/energy

安装命令行工具

  1. go install

执行安装命令

  1. energy install .

入门指南 - 传送门

快速入门

使用 energy-cmd 命令行工具自动安装环境依赖 energy install .

以example/simple示例为例

更新最新发布版本依赖

  1. go mod tidy

在Goland(或其它开发工具)中运行simple 或 go run simple.go

example/simple 示例代码

package main

import (
    "github.com/energye/energy/v2/cef"
)

func main() {
    //全局初始化 每个应用都必须调用的
    cef.GlobalInit(nil, nil)
    //创建应用
    cefApp := cef.NewApplication()
    //指定一个URL地址,或本地html文件目录
    cef.BrowserWindow.Config.Url = "https://energy.yanghy.cn"
    //运行应用
    cef.Run(cefApp)
}

系统支持

Windows MacOSX Linux

开源地址
官网

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1605 次点击  ∙  2 赞  
加入收藏 微博
4 回复  |  直到 2023-06-09 11:59:35
vluo_
vluo_ · #1 · 2年之前

性能如何?跟Electron 比有什么优势么

snxamdf
snxamdf · #2 · 2年之前

我是Energy之后才听大家说,Electron 我没用过,后来试过仅限于demo, 未深入了解.

Electron 使用 node ,Energy 使用 go。具体优势比较, 语言方面? 其它我还真不知道.

Energy 基于 golcl 和 CEF , golcl 是基于lazarus的 lcl 组件库, lcl 有大多数的系统原生组件 , 在这点上 electron 我不知道什么样.

最后 Energy 结合了 LCL(系统原生UI)和CEF,在Energy中只使用LCL可以开发小巧的PC端软件,也可使用LCL+CEF开发出漂亮的软件。

其它方面、稳定性、扩展、这些问题还需要时间累积来发现和修复。

sanrentai
sanrentai · #3 · 2年之前

跟wails相比如何

snxamdf
snxamdf · #4 · 2年之前
sanrentaisanrentai #3 回复

跟wails相比如何

wails 同样未真正体验过,也是在后面听说这个框架。 Energy 可以操作CEF底层API。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传