0%

Go 语言桌面 UI 框架浅度对比

最近想写点桌面小工具,语言已经确定了用 Go,于是把市面上常见的几个 UI 库简单对比了一下。

除了对比,也会记录一下我对它们的主观评价,便于下次使用的时候参考。

评价的目标是用于个人使用,会考虑性能、资源消耗、依赖以及上手难度等维度。性能数据只做浅度分析,场景是跑一个 Demo 用例,分析磁盘、内存、CPU的消耗情况。

项目 依赖 主要特性 构建 CPU 内存 磁盘
Fyne 跨平台、高性能、易用 首次慢 low 57M 44M
go-gtk3 cgo,gtk3 跨平台、高性能 首次慢 medium 35M 9.5M
go-qt cgo,qt 跨平台、组件丰富 - - - -
walk cgo Windows 友好、高性能 low 32M 7.7M
wails WebView2,Nodejs,npm 跨平台、WEB容器 medium 27+60M 9.3M
go-sciter Sciter 跨平台、嵌入式 Html & CSS 渲染 一般 - - -
  • Fyne
    跨平台、简洁易用、无外部依赖、开发便捷、构建较快。构建产物相比之下偏大,内存消耗偏多。
    没有资源约束优先使用,安心。
  • go-gtk3
    跨平台、组件丰富。构建产物小,内存消耗少。运行时需要带上 gtk 的动态库。
    gtkqt 选一个的话,会选 gtk
  • go-qt
    跨平台。构建产物必须带上 QT 的动态库,极不友好,未做测试。
    打算用这个的话干脆就直接用 QT 吧。
  • walk
    Windows平台专用,支持 Windows 拖放 API。不支持跨平台。
    看起来很美好,但是搞了两天发现不会用,也没啥文档,布局控制是真难。
  • wails
    跨平台、简洁易用、构建较快,类似 Electron 的效果对于拥有前端技术栈的用户非常友好。运行时依赖的 WebView2 消耗了大量资源,但相比 Electron 会稍好一些。
    包装 WEB 项目的话,用这个还是不错的,社区也比较活跃。
  • go-sciter
    Html & CSS 渲染,没跑起来。
    听说挺好,无奈跑不起来。

按照场景来评估,作者的选择是:一个都没选,写个小工具尺寸好几兆实在是不雅观。

老老实实用 MFC 吧,古老但轻巧。

附上一篇离线下载、安装 Visual Studio 的教程:

举个例子,自定义 MFC (支持 C++C#)离线包是这样的:

.\VisualStudioSetup.exe ^
--layout . ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
--add Microsoft.VisualStudio.Component.Debugger.JustInTime ^
--add Microsoft.VisualStudio.Component.VC.CMake.Project ^
--add Microsoft.VisualStudio.Component.VC.DiagnosticTools ^
--add Microsoft.VisualStudio.Component.Vcpkg ^
--add Microsoft.VisualStudio.Component.Windows10SDK.20348 ^
--add Microsoft.VisualStudio.Workload.ManagedDesktop ^
--add Microsoft.NetCore.Component.DevelopmentTools ^
--add Microsoft.Net.ComponentGroup.4.8.DeveloperTools ^
--add Microsoft.VisualStudio.Component.DiagnosticTools ^
--lang en-US zh-CN