15分钟用 Go 造出第一个桌面应用Energy 跨平台桌面开发框架新手快速上手【免费下载链接】energyEnergy 是 Go 基于 LCL 和 CEF(Chromium Embedded Framework) 开发的 GUI 框架, 用于开发Windows、MacOS 和 Linux 跨平台桌面应用. 可仅用 LCL 创建轻量级原生应用或结合 LCL 与 CEF 打造功能更全的应用程序.项目地址: https://gitcode.com/energye/energy我只想写一个内部工具让同事在 Windows 上用我自己在 Mac 上开发老板偶尔还要在 Linux 服务器上演示——难道要写三遍界面这句话是我去年第一次做桌面工具时的真实崩溃现场。后来我遇到了 Energy一个基于 Go、LCL 与 CEF 的跨平台桌面开发框架一套代码同时交付 Windows、macOS 和 Linux从那一刻起我的桌面应用终于不用再三线作战了。如果你也有同样的烦恼这篇新手入门教程就是为你准备的。它凭什么脱颖而出轻才是第一生产力先回答你心里最大的疑问市面上不是有 Electron 吗为什么要另找方案因为很多人的场景根本不是要做个 VS Code而是要做个能干活的小工具。Electron 拖着一整个 Chromium 出门安装包动辄一两百兆内存吃着吃着就让人心疼。而传统 GUI 方案比如 Qt又往往绑定 C门槛高、配环境像过山车。Energy 走的是第三条路用 Go 写逻辑用你熟悉的前端技术画界面需要多重自己选。它提供了两种能力组合你可以按需取用对比维度Electron 风格方案EnergyLCL 原生模式EnergyWebview / CEF 混合模式安装包体量常超 150MB几 MB 级中等CEF 模式更大内存占用高极低可控界面开发必须学前端生态Go 代码直接生成原生控件任意 HTML/CSS/JS上手门槛配置繁杂极低低一句话总结想要轻量系统应用用 LCL想要网页级表现力套上 Webview 或 CEF。两种路都在同一个仓库里随时可以换不用推倒重来。从零到跑通15 分钟做出一个桌面便签光说理论没用我们直接做一个极简桌面便签一个小窗口里面放一块网页画布你想记什么都行。整个过程只需要四步我带你一步步走。第一步装好唯一的前置依赖Energy 对环境的胃口很小你只需要保证两件事Go 语言环境 1.20 及以上项目go.mod里写得很清楚。在终端敲go version如果版本太老去官网装个新版即可。一个系统自带的 Web 渲染环境Windows 上需要 WebView2 运行时一般随系统或 Edge 预装macOS 用系统自带的 WKWebViewLinux 则依赖 WebKit2。这一步解决什么问题说白了Energy 不要求你装庞大的 SDK它把渲染引擎交给操作系统自己管你少装一个巨型依赖就少踩一类环境坑。如果后面想要完整的 Chromium 能力框架里也预留了 CEF 模式属于升级选项我们到进阶部分再说。第二步新建项目把仓库拉下来当参考先为你的便签开一个文件夹并初始化模块mkdir my-note cd my-note go mod init my-note建议同时把官方仓库克隆一份到本地里面的wv/、cef/、application/目录就是最好的活字典git clone https://gitcode.com/energye/energy看到这里你可能想问为什么非要 clone因为跑项目时 Go 会自动从模块源拉依赖但本地有一份源码报错时你能直接CtrlF翻到实现去看这是新手排查问题最省力的方式没有之一。第三步写核心几行——比你想象的短在项目里新建main.go核心逻辑就这么点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() // 窗口创建前的初始化别漏 m.SetCaption(我的桌面便签) m.SetWidth(380) m.SetHeight(480) m.Webview1 wv.NewWebview(m) m.Webview1.SetAlign(types.AlClient) // 让网页铺满整个窗口 m.Webview1.SetParent(m) m.TWindow.FormCreate(sender) // 窗口控件创建完成 m.Webview1.SetWindow(m) } func main() { wvApp : wv.Init() wvApp.SetOptions(application.Options{ DefaultURL: data:text/html,h2今天要做点什么/h2textarea stylewidth:100%;height:90%/textarea, }) wv.Run(Form1) }逐行说人话wv.Init()是启动前的全局初始化SetOptions告诉程序第一个窗口加载什么页面这里直接塞了一段内联 HTML偷懒但够用FormCreate里的代码就是铺一个网页到窗口里、让它铺满。窗口框架是 Go 写的页面内容是你的 HTML——两者就这么拼在一起了。第四步跑起来go run main.go第一次运行会花一点时间因为要下载并编译依赖这不是卡死是在下载喝口水等它。之后你会看到一个小窗口出现在屏幕中央标题写着我的桌面便签里面是一个可以打字的文本框。到这里你的第一个跨平台桌面应用已经诞生了。同一份代码换台装了 Go 的 Windows 或 Linux 机器照样能跑——这就是跨平台的意义所在你只需要维护一份逻辑。进阶定制让它更像你想要的桌面应用跑通只是开始接下来这些一行代码级别的魔法能让它从测试窗口变成正经应用。改标题、改尺寸、限制大小这些都在application.Options里像填空一样简单wvApp.SetOptions(application.Options{ Caption: 我的便签, DefaultURL: https://example.com/note, Width: 800, Height: 600, MinWidth: 400, MinHeight: 300, })想要无边框或半透明Options里有Frameless、WindowTransparent这类开关字段一个布尔值就能做出毛玻璃风的悬浮工具。更让人兴奋的是扩展想象力既然窗口内容本质上是网页那你就能把 Vue、React 这类前端框架整个搬进来当界面Go 这边则通过ipc包与网页双向通信——ipc.On监听前端事件ipc.Emit把数据推回页面文件读写、系统调用这类网页干不了的脏活累活全部交给 Go 在后台悄悄完成。想自定义右键菜单wv包里也有现成的上下文菜单接口想要系统托盘图标仓库里的platform/linux/systray目录就是现成范本。换句话说凡是前端能画的都归前端凡是系统要碰的都归 Go。这种分工让桌面应用开发第一次变得像做网页一样舒服。新手最容易踩的 5 个坑与解救方案我踩过的坑直接整理成清单给你遇到症状对号入座即可坑典型症状一句话解救Go 版本过低依赖拉取报错、编译报语法错误升到 1.20go version先自查Windows 上打不开窗口启动即崩溃或黑屏安装 WebView2 运行时Evergreen 版首次go run特别慢看起来像卡死是首次下载依赖耐心等别急着杀进程本地 HTML 加载不出来页面空白、图片全裂别用file://硬拼路径走框架的本地资源加载能力换系统后布局错乱字体大小不一、控件被挤注意 DPI 与字体设置必要时用Options里窗口尺寸相关的字段做兜底这五条里前三条是环境问题后两条是使用习惯问题。环境问题一次配好终身受益使用习惯问题看一次源码目录比如application/local_load.go的本地资源处理就能彻底想通。收尾与更多玩法回顾一下这趟 15 分钟的旅程你没有装任何重型 SDK没有写一行 C就用 Go 加一段 HTML做出了一个能在三大系统上跑的桌面便签。这就是 Energy 想带给你的东西——让桌面应用这件事从门槛很高变成今晚就能试试。想继续深入的话三个方向推荐给你把官方仓库克隆下来git clone https://gitcode.com/energye/energy重点翻application/应用与窗口配置、wv/网页窗口、ipc/前后端通信这几个目录每个文件都有详尽的注释是比任何教程都可靠的一手资料从便签升级为带网页的工具栏试着给网页加上右键菜单、拖拽和系统托盘如果发现系统 Webview 满足不了你的复杂场景切换到cef目录下的 Chromium 模式体验完整浏览器能力。别等学会再动手——先把上面那段代码粘进你的电脑跑起来看到窗口弹出的那一刻你就已经是 Energy 开发者了。剩下的全是惊喜。【免费下载链接】energyEnergy 是 Go 基于 LCL 和 CEF(Chromium Embedded Framework) 开发的 GUI 框架, 用于开发Windows、MacOS 和 Linux 跨平台桌面应用. 可仅用 LCL 创建轻量级原生应用或结合 LCL 与 CEF 打造功能更全的应用程序.项目地址: https://gitcode.com/energye/energy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考