组织介绍

3.0

是Go基于 LCL & CEF & Webview(Webview2,Webkit2) 构建跨平台桌面应用的框架

中文 | English


go-version github release Build Status repo Go Report Go Reference Ask DeepWiki Discord codecov contributors license

项目简介

Energy 是 Go 使用 LCLCEFWebview2Webkit2GtkWKWebView 开发的框架

LCL — 原生 UI 组件库

CEF — 浏览器组件,CEF3 via CEF4Delphi

Webview2 — 浏览器组件,Webview2 via WebView4Delphi,使用系统运行时

Webkit2(Webkit2Gtk / WKWebView)— 浏览器组件,Webkit2,使用系统运行时

特性

  • 三种渲染引擎可选:LCL 原生控件(轻量、系统风格)、Webview 系统运行时(WebView2 / WebKit2,无需额外依赖)、CEF 完整 Chromium(全量浏览器能力)。三者可混合使用或独立使用
  • 可视化设计器:Energy Designer 支持拖拽组件、配置属性和事件、一键运行预览,生成可维护的 Go 源码
  • 上百种原生控件:基于 LCL 提供 100+ 系统原生 GUI 组件,包括按钮、表格、树形视图、列表、网格、对话框、代码编辑器等
  • Go + Web 混合架构:Go 后端负责窗口管理、系统调用、文件流、安全加密等;Web 前端(HTML + CSS + JavaScript)负责界面展示,支持 Vue、React、Angular 等主流前端框架
  • IPC 双向通信:基于事件驱动的高性能 IPC,Go 与 Web 端可双向调用和传递数据,支持回调和自动类型转换
  • 本地资源加载:支持自定义协议直接读取本地文件或 Go embed 嵌入资源,无需 HTTP 服务器;也支持 HTTP 服务加载
  • 跨平台:支持 Windows(7+)、macOS(Intel / Apple Silicon)、Linux(x86 / ARM)
  • NO CGO:可选纯 Go 开发,无需 CGO 编译,降低环境配置门槛

开发环境

  • Golang >= 1.20
  • Energy 开发环境([CEF or System Runtime], libenergy runtime)
  1. 安装 Golang
  2. Energy Designer Releases 创建项目

快速开始

LCL 原生模式

package main

import (
	"github.com/energye/lcl/api"
	"github.com/energye/lcl/lcl"
)

type TMainForm struct {
	lcl.TEngForm
}

var MainForm TMainForm

func main() {
	lcl.Init()
	lcl.RunApp(&MainForm)
}

func (m *TMainForm) FormCreate(sender lcl.IObject) {
	m.SetCaption("Hello Energy")
	m.SetWidth(400)
	m.SetHeight(300)
	m.WorkAreaCenter()

	btn := lcl.NewButton(m)
	btn.SetParent(m)
	btn.SetCaption("点击我")
	btn.SetLeft(50)
	btn.SetTop(50)
	btn.SetOnClick(func(sender lcl.IObject) {
		api.ShowMessage("Hello from Go!")
	})
}

Webview 混合模式

package main

import (
	"github.com/energye/energy/v3/application"
	"github.com/energye/energy/v3/window"
	"github.com/energye/energy/v3/wv"
	"github.com/energye/lcl/lcl"
	"github.com/energye/lcl/types"
)

type TForm1 struct {
	window.TWindow
	Webview1 wv.IWebview
}

var Form1 TForm1

func (m *TForm1) FormCreate(sender lcl.IObject) {
	m.TWindow.InternalBeforeFormCreate() // window create before call
	m.SetCaption("Hello Energy")
	m.SetWidth(800)
	m.SetHeight(600)

	m.Webview1 = wv.NewWebview(m)
	m.Webview1.SetAlign(types.AlClient)
	m.Webview1.SetParent(m)

	m.TWindow.FormCreate(sender) // window widget create after call

	m.Webview1.SetWindow(m)
}

func main() {
	wvApp := wv.Init()
	wvApp.SetOptions(application.Options{
		DefaultURL: "https://energye.github.io",
	})
	wv.Run(&Form1)
}

使用 Energy Designer

  1. 启动 Energy Designer
  2. 新建项目,拖拽组件到画布
  3. 配置属性和事件
  4. 点击运行预览

NO CGO

可选纯 Go 开发,无需 CGO 编译

示例

文档

系统支持

Windows MacOS Linux

32位 64位 测试系统版本
Windows Windows Windows 7、10、11
MacOSX MacOSX MacOSX MacOSX Intel x86
MacOS M1/M2 MacOS MacOS MacOS Apple Silicon
Linux Linux Linux Deepin20.8、Ubuntu18.04、LinuxMint21
Linux ARM Linux ARM Linux ARM Kylin-V10-SP1-2107

相关项目


如果你觉得此项目对你有帮助,请点亮 Star!


ENERGY QQ 交流群 & 微信

QQ交流群: 541258627 微信: sniawmdf


项目截图

image


开源协议

license

贡献者

成就
373
Star
70
Fork
成员(1)
299760 snxamdf 1675754835
yanghy

搜索帮助