Fyne 系列 01:为什么用 Go 写桌面 GUI
cbowen

Fyne 是一个用 Go 编写跨平台图形界面的工具包。它的定位不是做一个浏览器壳,也不是把前端工程搬到桌面上,而是让 Go 程序可以直接拥有一个原生桌面窗口。

如果你已经会写 Go 命令行工具,那么 Fyne 比较适合把这些工具包上一层界面,例如配置生成器、文件批处理工具、日志查看器、下载器、内部运维工具等。

适合 Fyne 的场景

  • 小型桌面工具
  • 内部管理工具
  • 文件处理工具
  • 配置编辑器
  • 需要跨 Windows、macOS、Linux 的轻量应用

这些场景通常不需要复杂前端生态,也不一定需要浏览器运行时。Fyne 的优势是项目结构简单,一个 Go 模块就能放下主要逻辑和界面代码。

和其他方案的区别

Electron 适合复用前端技术栈,但安装包通常比较大。Wails 适合 Go 后端加 Web 前端的组合,界面表现力更强,但仍然需要维护前端代码。Gio 更底层,灵活度高,不过学习曲线也更高。

Fyne 的特点是直接、统一、跨平台。你写的是 Go 代码,控件、布局、事件都在 Go 里完成。代价是界面风格更偏 Fyne 自己的组件体系,不能像 Web 那样随意控制每个 CSS 细节。

一个最小窗口

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import (
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/widget"
)

func main() {
a := app.New()
w := a.NewWindow("Hello Fyne")
w.SetContent(widget.NewLabel("Hello Fyne"))
w.ShowAndRun()
}

Fyne 程序的基本结构就是创建应用、创建窗口、设置内容、启动事件循环。

这个系列会写什么

这个系列会从安装环境开始,逐步写到布局、控件、数据绑定、文件对话框、主题、自定义控件、测试、桌面打包、跨平台编译、Docker、Android APK,以及 fyne-x 社区组件。

目标很简单:不是把文档翻译一遍,而是围绕真实桌面小工具开发,把常用写法和常见坑整理出来。

 评论
评论插件加载失败
正在加载评论插件