V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
MyDearFather
V2EX  ›  问与答

除了 qt\electron\flutter 还有哪些 PC 跨平台的 GUI 方案? 要求是界面可以搞得现代一点,至少可以兼容 windows 和 macos,性能比 electron 强就行.

  •  
  •   MyDearFather · 2023-08-02 14:39:43 +08:00 · 2417 次点击
    这是一个创建于 508 天前的主题,其中的信息可能已经有所发展或是发生改变。
    29 条回复    2023-08-03 13:47:44 +08:00
    NoNewWorld
        1
    NoNewWorld  
       2023-08-02 14:43:01 +08:00
    flutter
    MyDearFather
        2
    MyDearFather  
    OP
       2023-08-02 14:44:44 +08:00
    @NoNewWorld 人不太好招欸这个
    Eiden
        3
    Eiden  
       2023-08-02 14:48:09 +08:00
    avalonia
    qwq11
        4
    qwq11  
       2023-08-02 14:51:11 +08:00 via Android
    tauri
    Aloento
        5
    Aloento  
       2023-08-02 14:53:46 +08:00
    MAUI
    MyDearFather
        6
    MyDearFather  
    OP
       2023-08-02 14:56:22 +08:00
    谢谢,我先研究研究.
    NoOneNoBody
        7
    NoOneNoBody  
       2023-08-02 14:59:50 +08:00
    pyqt ,虽然也是 qt 的东西,但后端可以完全用 python 写,懂信号槽传递回界面就行
    不过编译麻烦,感觉贵司需要编译打包
    MyDearFather
        8
    MyDearFather  
    OP
       2023-08-02 15:07:30 +08:00
    @NoOneNoBody 谢谢,程序用的是 golang,界面目前第一版用的 electron,但是会频繁使用到多窗口的功能,速度很慢.不考虑 qt 相关的技术栈是目前界面做得挺好看的,用 qt 没太大信心做出原来的效果,担心用户接受不了,另外担心 qt 的商业授权问题,还是尽量选择开源的方案.
    NoOneNoBody
        9
    NoOneNoBody  
       2023-08-02 15:11:30 +08:00
    @MyDearFather #8
    噢,对的,我忘了授权的事,公司还是要避坑
    putaozhenhaochi
        10
    putaozhenhaochi  
       2023-08-02 15:16:01 +08:00 via iPhone
    感觉除了 qt 和 electron 没有什么生态已经可以的方案了。
    elechi
        11
    elechi  
       2023-08-02 16:10:48 +08:00
    MAUI UnoPlatform Avalonia 都是.net 的。。。
    Arctic2021
        12
    Arctic2021  
       2023-08-02 16:14:10 +08:00
    其实只有了 qt 和 electron ,qt 放心用,做好了开放源码就不用担心商业授权问题。
    其它跨平台解决方案,真就是玩具级别,不堪用。
    Jirajine
        13
    Jirajine  
       2023-08-02 16:36:40 +08:00
    桌面端不同于移动端,桌面端的 webview ( chromium )体验是比较好的,起码远好于半成品二等公民的 flutter/rn 等。
    除了 electron ,那就是系统 webview 方案,go 的 wails ,rust 的 tauri ,或者自己封装 API 。
    缺点是不能广泛兼容各版本系统;不能确保各平台绝对一致性,UI 代码要像传统前端项目一样考虑不同浏览器的兼容性;没有 electron 封装的大量开箱即用的跨平台 gui 常用 API 。
    好处是打包体积小,后端语言原本是什么还是什么不需要重写或 ffi 。至于性能,除了冷启动和内存占用优于 electron ,页面实际性能差不多,甚至某些平台上还不如足够现代版本的 electron 。
    dusu
        14
    dusu  
       2023-08-02 16:57:54 +08:00 via iPhone
    delphi
    x77
        15
    x77  
       2023-08-02 17:06:04 +08:00 via Android
    Flutter ,先进且高效
    dctxf
        16
    dctxf  
       2023-08-02 17:10:10 +08:00
    它很屎,但是还是很多人用,就已经说明了问题。
    linauror
        17
    linauror  
       2023-08-02 17:14:32 +08:00
    fyne ,golang 的 GUI 框架,刚好你们也是 golang 技术栈,支持多端,包括移动端和桌面端。就是布局有点麻烦,可以了解一下
    angrylid
        18
    angrylid  
       2023-08-02 18:34:42 +08:00   ❤️ 1
    说个暴论:要平衡 DX/UX ,你就非上浏览器不可。不论这个浏览器是 Electron 还是 Chromium Embedded Framework 还是 Webview2
    duke807
        19
    duke807  
       2023-08-02 18:46:33 +08:00 via Android
    wxwidgets
    效果可以参考 kicad 这个软件
    youngxhui
        20
    youngxhui  
       2023-08-02 18:47:10 +08:00 via Android
    Javafx ,kotlin kmm
    mxT52CRuqR6o5
        21
    mxT52CRuqR6o5  
       2023-08-02 19:02:59 +08:00 via Android
    Web 啊
    mxT52CRuqR6o5
        22
    mxT52CRuqR6o5  
       2023-08-02 19:04:36 +08:00 via Android
    Python 的话我以前见过一个 kivy
    yolee599
        23
    yolee599  
       2023-08-02 19:12:14 +08:00 via Android
    投 wxWidgets 一票
    cin
        24
    cin  
       2023-08-02 19:20:27 +08:00
    golang 就用 wails, rust 用 tauri
    ysn2233
        25
    ysn2233  
       2023-08-02 19:36:03 +08:00
    javafx ,可以用 graalvm 编译
    justonelastdance
        26
    justonelastdance  
       2023-08-02 20:01:29 +08:00
    @cin wails 内部还是嵌套的 html 页面吧,那还不如 electron ,毕竟生态好
    MyDearFather
        27
    MyDearFather  
    OP
       2023-08-02 23:49:55 +08:00 via Android
    @angrylid 是的,wpf 也能做出很好的效果,但是要照顾 macOS
    kujio
        28
    kujio  
       2023-08-03 10:48:04 +08:00
    你这问的不就是 tauri 吗,墙裂推荐,
    nmgwddj
        29
    nmgwddj  
       2023-08-03 13:47:44 +08:00
    这个事情我觉得要考虑一下你们公司目前是否已经有一部分技术积累,看公司目前的技术积累技术栈,如果桌面端技术栈以 C/C++ 为基础,那你选择 Flutter/Electron/Tauri/Wails 等类似框架都避免不了 FFI ,除了 FFI 方式以外不同的框架还提供了不同的通信手段,如 N-API/Fultter Channel 等。如果公司大量技术积累都是基于 C/C++ 的,那选择 Qt Quick 无疑是最好的方案。
    如果不考虑历史债务,我个人还是非常愿意选择 Flutter/Electron/Tauri/Wails 这类框架的,看自己更熟悉哪种技术栈。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2906 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:46 · PVG 21:46 · LAX 05:46 · JFK 08:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.