Hacker News 中文摘要

RSS订阅

显示HN:Gova - Go语言的声明式GUI框架 -- Show HN: Gova – The declarative GUI framework for Go

文章摘要

Gova是一个用于Go语言的声明式GUI框架,支持用单一代码库构建macOS、Windows和Linux原生桌面应用。它提供类型化组件、响应式状态、真实平台对话框,并生成静态二进制文件,无需JavaScript运行时或浏览器。框架采用Go结构体定义视图,支持显式响应式作用域管理状态和信号,避免隐藏调度和意外重渲染。目前处于1.0之前版本,API可能变动。

文章总结

Gova:Go语言声明式GUI框架

Gova是一个专为Go语言设计的声明式GUI框架,支持使用单一代码库为macOS、Windows和Linux构建原生桌面应用程序。该框架具有以下核心特性:

核心优势 1. 组件即结构体 - 视图使用带类型属性的普通Go结构体 - 默认值为零值 - 组合通过普通函数调用实现 - 无需魔法属性包装器/字符串键/钩子排序规则

  1. 显式响应式作用域
  • 状态、信号和效果都存在于可见的Scope中
  • 无隐藏调度器/意外重渲染/Rx/Redux
  1. 原生平台集成
  • macOS通过cgo实现NSAlert等原生对话框
  • Windows/Linux使用Fyne回退方案
  • 跨平台统一API
  1. 单一静态二进制
  • 通过go build生成独立可执行文件
  • 无需JavaScript运行时/嵌入式浏览器/额外资源
  1. 热重载功能
  • 实时监控.go文件变更
  • 支持PersistedState保持UI状态

技术指标 - 二进制大小:约32MB(基础示例) - 内存占用:约80MB RSS(空闲状态) - 要求:Go 1.26+及C工具链 - 许可证:MIT

开发体验 - 内置CLI工具支持开发流程: • gova dev:热重载开发模式 • gova build:生成静态二进制 • gova run:单次构建运行

平台支持 - 核心UI:全平台支持 - 原生对话框:macOS完整支持,其他平台使用Fyne回退 - 任务栏功能:macOS支持NSDockTile

示例应用 包含多个可运行示例: - 计数器(基础功能) - 待办事项(状态管理) - 笔记应用(多视图导航) - 主题切换(暗黑/亮色模式)

当前状态 预发布阶段(pre-1.0),API在v1.0前可能变更,生产环境建议锁定特定版本标签。

安装方式 go get github.com/nv404/gova@latest

注:本文保留了核心功能描述、技术参数和开发相关的重要细节,删减了部分重复性说明和次要的安装配置细节。

评论总结

总结评论内容:

  1. 对Fyne框架的评价
  • 正面评价:用户认为Fyne功能实用,支持跨平台编译
    • "I once built a small utility using the 'Fyne' framework; it was reasonably functional" (GuardCalf)
    • "cross compiling is so easy" (iamcalledrob)
  1. 对新项目的期待
  • 期待Go语言的声明式UI框架
    • "Looking forward to a Golang declarative framework" (iamcalledrob)
    • "Very excited every time I see cross-platform GUI in go" (rubenvanwyk)
  1. 项目功能建议
  • 建议增加多窗口支持和WASM目标
    • "invest in rich multi-window support early on" (iamcalledrob)
    • "How reasonable is it to ask for this to support the WASM target?" (someguyornotidk)
  1. 项目设计评价
  • 对UI设计表示赞赏
    • "That's a beautifully designed library, bravo!" (vegancap)
    • "The hot-reload dev cli looks very cool" (kitd)
  1. 项目质疑
  • 对项目可持续性和功能提出疑问
    • "Are you in this for the long run?" (4ndrewl)
    • "what does this provide beyond Fyne itself?" (donatj)
  1. 相关技术推荐
  • 用户推荐其他GUI解决方案
    • "I've been keeping an eye on gomponents.com" (jacques_chester)
    • "Somewhat related but not declarative: MIQT offers MIT-licensed Qt bindings" (foresto)