V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
itakeman
V2EX  ›  程序员

分享一下新发现的 go 语言 GUI 框架 cogentcore

  •  
  •   itakeman · 21 小时 52 分钟前 · 3042 次点击

    GitHub 上这么介绍的:一个免费的开源框架,用于构建强大、快速、优雅的 2D 和 3D 应用程序,这些应用程序可在 macOS 、Windows 、Linux 、iOS 、Android 和 Web 上运行,只需一个 Go 代码库,即可编写一次代码,随处运行。

    我看有一定的潜力,希望能替代 fyne ,感觉写出来的界面会比 fyne 、GioUI 美观很多

    https://github.com/cogentcore/core

    第 1 条附言  ·  21 小时 19 分钟前
    想自己看 Demo 的小伙伴可以直接本地:
    go install cogentcore.org/core@main
    40 条回复    2025-09-30 10:03:58 +08:00
    aqtata
        1
    aqtata  
       21 小时 41 分钟前
    我认为用 go 搞 UI 是条邪路
    itakeman
        2
    itakeman  
    OP
       21 小时 38 分钟前
    @aqtata 我自己写着自己用用感觉还可以,看了这个框架,感觉 demo 看起来是美观舒适的
    miniliuke
        3
    miniliuke  
       21 小时 33 分钟前   ❤️ 2
    @aqtata 其实我好奇除了 JS/TS ,什么语言做 UI 不是条邪路,或者说什么语言特性是对 UI 程序比较友好的
    itakeman
        4
    itakeman  
    OP
       21 小时 30 分钟前
    @miniliuke ![Demo]( )

    看起来还可以
    fds
        5
    fds  
       21 小时 26 分钟前
    哇,好全能呀!就是回调形式的语法不太喜欢,但 UI 不用回调似乎也不合理。
    itakeman
        6
    itakeman  
    OP
       21 小时 22 分钟前
    @fds 对的,我感觉 UI 也简洁好看



    xtreme1
        7
    xtreme1  
       21 小时 15 分钟前
    @miniliuke #3 他指的应该是 goroutine 每次 native 调用都必须 pin 到一个系统线程上再构建出 native 栈, 假如单搞个系统线程跑事件循环, 用 js 也没差的. go 这一块确实有自己的劣势在的.
    guiyumin
        8
    guiyumin  
       21 小时 6 分钟前
    wails 不好吗
    不挺好的吗
    itakeman
        9
    itakeman  
    OP
       21 小时 5 分钟前
    @guiyumin 不会写 js 、css 、html 那一套,wails 好像还不支持安卓、ios
    shadowyue
        10
    shadowyue  
       20 小时 55 分钟前
    我觉得抛开 HTML 和 CSS 做 GUI 不是理智选择,这就是当下事实上的编写 UI 最主流的方式,无论谁来了都打不过。

    如果不喜欢 JS 换成别的语言那还是行得通,完全抛开 HTML 和 CSS 等于抛弃绝大部分潜在用户。
    yangheng4922
        11
    yangheng4922  
       20 小时 51 分钟前
    有点卡
    wh469012917
        12
    wh469012917  
       20 小时 48 分钟前   ❤️ 1
    @shadowyue 我们公司刚开始用 electron ,后面因为性能问题,改用用 QT ,做桌面端 GUI ,完全抛弃了 js ,所以要看场景,不能绝对
    dbskcnc
        13
    dbskcnc  
       20 小时 47 分钟前
    目前 golang 的界面库还是算了,基本都是 toy 级别的,基本的 Ime 都没处理好,涉及视频更是直接完蛋
    itakeman
        14
    itakeman  
    OP
       20 小时 12 分钟前 via Android
    @shadowyue 个人玩玩,没有时间精力专门去学 css 、js
    @dbskcnc 自己用用,感觉还可以,同样界面,编译的文件大小只相当于 fyne 的三分之一左右
    Z1076
        15
    Z1076  
       19 小时 2 分钟前   ❤️ 1
    好东西, 最近正好需要。
    itakeman
        16
    itakeman  
    OP
       18 小时 59 分钟前 via Android
    @Z1076 赶紧试试,打包的文件只有 fyne 三分一大小
    tempvar
        17
    tempvar  
       18 小时 44 分钟前   ❤️ 1
    @itakeman 这是我试过所有的 go gui 后觉得最有潜力的,个人觉得 fyne 最拉
    millken
        18
    millken  
       18 小时 40 分钟前
    研究了很多 Golang UI 库,最终发现还是使用 WEB 构建 UI 是王道。
    iorilu
        19
    iorilu  
       14 小时 59 分钟前
    说真的, 我试了不少 gui 库

    最后总结就是, 如果真想做产品, 长期升级迭代的, 就两种选择

    1. 原生 gui, 比如 qt, 或 python pyqt 等 flutter 也算把, 如果愿意学的话, 另外就是微软哪些
    2. webview 那套, 这个其实每个语言基本都有, electron, wails, tauri, pywebview 等等
    crackidz
        20
    crackidz  
       14 小时 47 分钟前
    @shadowyue 其实这个框架就是包的 JS+CSS...
    anivie
        21
    anivie  
       14 小时 13 分钟前
    @iorilu 长期迭代 pyqt ?
    mogita
        22
    mogita  
       13 小时 55 分钟前 via iPhone
    多一个选择永远不是坏事。
    itakeman
        23
    itakeman  
    OP
       13 小时 13 分钟前
    @tempvar 你也觉得这个框架潜力不错吧
    bbbblue
        24
    bbbblue  
       12 小时 34 分钟前
    如果是要长期主力写还是 electron 吧。。
    之前学 maui 的经历告诉我。。移动跨平台可能可以用。。 但是移动+桌面端跨平台 快跑
    用浏览器吧 浏览器是你最好的朋友 就是他比较吃内存。。。
    Leon6868
        25
    Leon6868  
       11 小时 14 分钟前
    看 UI ,这个技术栈是 go+flutter 吧
    可以看看我前几个月发的讨论贴 https://v2ex.com/t/1142560 ,个人认为 webview 就是 GUI 最优解
    itakeman
        26
    itakeman  
    OP
       11 小时 3 分钟前
    @Leon6868 不会 web 技术,还是喜欢原生
    itakeman
        27
    itakeman  
    OP
       11 小时 2 分钟前
    @Leon6868 不是 flutter
    Leon6868
        28
    Leon6868  
       10 小时 39 分钟前   ❤️ 1
    @itakeman #27 还真不是,是自绘,这套搞不好还能用在嵌入式上,虽然现在性能不太行,但是勇气可嘉
    Leon6868
        29
    Leon6868  
       10 小时 37 分钟前   ❤️ 1
    @itakeman #27 甚至有路由系统,玩真的!这回真的是小瞧它了。
    我觉得加一个 DSL ,模仿一下 jsx 语法,会很香
    dearmymy
        30
    dearmymy  
       9 小时 17 分钟前
    @fds ui 就是适合用协程,以前写 mfc 各种回调烦死了。
    itakeman
        31
    itakeman  
    OP
       9 小时 7 分钟前 via Android
    @Leon6868 目前 fyne 写的项目,用这个重写,小了三倍大小,我感觉还行。我我也在观望后续
    itakeman
        32
    itakeman  
    OP
       8 小时 57 分钟前 via Android
    kuanat
        33
    kuanat  
       6 小时 40 分钟前
    是不是该用跨平台框架来写 ui 是个哲学问题,即便你的立场为是,还是要继续抉择,要每个平台都用相同的(非原生风格)自定义 ui ,还是要每个平台上用原生的 ui 。基本上后者都是走浏览器了,因为没人或者团队能承担得起这样的维护成本。

    在跨平台、自绘 ui 这个场景中,本质上要看在各个平台上底层用的什么 api ,楼上有人提到 go 的 goroutine 与系统线程 pinning 相关的硬伤,这个确实无解,因为现在的操作系统都是同样的 ui 线程逻辑。

    这种项目最大的困难是长期稳定地维护下去。而且通常来说好看、小巧和兼容性强是不可兼得的。以 win 为例,想要小就必然对接 win32 api ,用这个写现代界面,光一个 dpi 自适应就头大。到了 linux 又会面临是 gtk/qt 还是协议层造轮子,qt 因为授权大部分时间会被排除在外,如果是直接 wayland 协议开始写,且不说什么消息循环都要手动,就天天跟着上游更新都是很大的工程量。

    当然如果写的项目不需要长期维护,这类 ui 框架还是很有市场的。
    humbass
        34
    humbass  
       5 小时 32 分钟前
    没有类似 html 中的类似 flex 的布局,写个界面是不是很蛋疼。
    iorilu
        35
    iorilu  
       5 小时 17 分钟前
    @anivie 当然, qt 都 20 年了吧, 可以说 qt 是唯一的长期稳定跨平台 gui 框架

    真做什么商业软件, 用这个肯定没错, 当然 pyside 一样, 我是指 qt 这一类东西

    当然会 c++直接用原生 qt 也行
    rekulas
        36
    rekulas  
       3 小时 4 分钟前   ❤️ 2
    我觉得很有意义,说 web 一把梭的写自用工具确实方便,但是现在随便什么小工具都用 electron 之类的写,开发速度确实快界面也好看,但说实话都反胃了,一个 json 序列化小工具都能占几百 M 内存,遇到这种我连安装的欲望都没有,而且很多软件体验非常差(相比原生开发,感觉 electron 系的出 bug 概率要大不少),包括大厂的-例如钉钉
    qt 虽然稳但是实在太重了,而且要做出好看点的 ui 难度可不小
    webview2 是个好东西但是难以跨平台,而且对环境有要求

    如果是做一些侧重后端处理,前端较为简单的软件,能跨平台的自绘 UI 库是个很不错的选择
    baton
        37
    baton  
       2 小时 37 分钟前
    fyne 性能不行,多行文本框内容一多卡得很,我用 gotk3 速度快很多
    dimwoodxi27
        38
    dimwoodxi27  
       2 小时 34 分钟前 via Android   ❤️ 1
    @rekulas 现在部分人就喜欢用 webview 到处生产垃圾,性能完全没法和自绘 UI 比,但不管什么需求条件就是一股脑吹 webview ,代码注入 内部资源篡改 CPU 和内存调度完全不合理等这些问题是根本不会去看,最经典的口头禅就是为了效率,为了效率拉一坨屎
    xxlsize
        39
    xxlsize  
       2 小时 31 分钟前
    @rekulas wails 打包出来大小还接受
    tempvar
        40
    tempvar  
       2 小时 28 分钟前
    @itakeman 是的,是两父子在搞的,我之前好像在那儿看过一个他儿子的分享,说要把这个当作以后的事业
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3109 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 04:32 · PVG 12:32 · LAX 21:32 · JFK 00:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.