• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yuyue001
V2EX  ›  程序员

2024 年,桌面软件开发(不考虑移动端),推荐什么技术栈?

  •  
  •   yuyue001 · Jan 24, 2024 · 31034 views
    This topic created in 1014 days ago, the information mentioned may be changed or developed.

    flutter 似乎不支持多窗口,pass ,

    比如 QT/MAUI/Avalonia/JetPack Compose/,哪个容易上手?

    基于 web 的技术, Electron 项目太大,性能要求可能不行。 tauri 尝试了一下,rust 太难写业务太复杂了。 wails 怎么样?

    113 replies  •  2024-01-26 16:33:50 +08:00
    1  2  
    ❮ ❯
    murmur
    murmur
    Jan 24, 2024❤️16
    1
    electron 性能哪里不行了,不就是启动慢点么,浏览器的性能挺好的,尤其是 chrome ,比菜鸟写的桌面程序好多了,ui 多还炫酷
    wuruxu
    wuruxu
    Jan 24, 2024❤️1
    2
    桌面软件开发 还是 QT 比较靠谱
    wireshark , telegram , zoom 都是 QT 写的
    stinkytofu
    stinkytofu
    Jan 24, 2024
    3
    javafx
    mainjzb
    mainjzb
    Jan 24, 2024❤️2
    4
    wails 3.0 才有多窗口,目前似乎处于 beta 版本
    tauri 的多窗口似乎不支持 linux
    多窗口是硬需求的话,这些新框架的坑还挺多,不想踩坑的话以上似乎只有 qt 和 Electron 符合你的需求。
    guguji5
    guguji5
    Jan 24, 2024❤️1
    5
    刚拿 electron 试了试手,,感觉很适合前端,
    hez2010
    hez2010
    Jan 24, 2024 via Android❤️5
    6
    Avalonia 对非线性动画支持的很好,还支持 gpu interop ,还是在场唯一一个有 compositing renderer 架构的自绘 UI 框架,可以做到无论 UI 线程是否卡死都能流畅进行的隐式动画。
    配合 FluentAvaloniaUI 可以做出很漂亮的 fluent design 的 app 。
    另外它还支持 nativeaot 编译到机器码直接出二进制,aot 后可以做到双击后瞬间启动。
    rwecho
    rwecho
    Jan 24, 2024 via Android
    7
    Blazor
    Maui+blazor 或者 avalonia+ blazor
    rwecho
    rwecho
    Jan 24, 2024 via Android❤️1
    8
    说下原因,首先你提到业务,那基本上如果能用前端框架必然是最好的。又提到 eletron 太大和性能问题,对于 blazor 可以把耗时的逻辑放到 native 里面,页面注重展示。并且打包不大,webview2 另外算。

    但是如果你想支持 xp 那就算了。

    技术栈 c# blazor Javascript tailwindcss
    你可以参考下 https://github.com/rwecho/V2ex.Maui
    iorilu
    iorilu
    Jan 24, 2024 via Android❤️1
    9
    愿意学习的话,还是 pyqt 靠谱,跨平台方便
    ashong
    ashong
    Jan 24, 2024 via iPhone
    10
    cef+ts
    huage
    huage
    Jan 24, 2024❤️1
    11
    https://www.v2ex.com/t/986341

    总结一下:
    aardio
    electron
    pyqt
    antonius
    antonius
    Jan 24, 2024
    13
    业务复杂的话,前端用 Electron ,C++用 Qt 。c#用 wpf/uwp 。
    业务不复杂的话,c/c++用 nanovg/imgui 都行。
    yKXSkKoR8I1RcxaS
    yKXSkKoR8I1RcxaS
    Jan 24, 2024
    14
    QT ,唯一选择
    renmu
    renmu
    Jan 24, 2024 via Android
    15
    人 vscode 怎么不卡(狗头
    tyzandhr
    tyzandhr
    Jan 24, 2024 via Android
    16
    compose 还是前端的风格,和桌面不是很搭
    jlkm2010
    jlkm2010
    Jan 24, 2024
    17
    可以试试同样基于 webview2 的 Neutralinojs
    https://neutralino.windhc.com/
    xieren58
    xieren58
    Jan 24, 2024
    18
    Avalonia
    tool2d
    tool2d
    Jan 24, 2024
    19
    都 2024 年,有什么不懂问 gpt 就行,前端和客户端技术,已经没有很大隔阂了。

    以前前端写太多,今年我也试试用纯 GPU 写本地客户端程序,也许会挺有意思。

    反正 gpt 是万能老师傅,一般不会翻车。
    dc46555ad
    dc46555ad
    Jan 24, 2024
    20
    颜值第一,我推荐 electron
    lyusantu
    lyusantu
    Jan 24, 2024
    21
    wpf
    jones2000
    jones2000
    Jan 24, 2024
    22
    win32
    yuyue001
    yuyue001
    OP
    Jan 24, 2024
    23
    @renmu

    我说 electron 开发臃肿,是因为我本人 Python 开发,前端技术比较菜,我觉得自己搞不定。VSCode 是不卡,可我也没微软那水平啊。
    yuyue001
    yuyue001
    OP
    Jan 24, 2024
    24
    @hez2010 试了 Avalonia ,axaml 文件太大,拆分组件时传递参数总是失败。ChatGPT 也解决不了,现在除了 11 版,ChatGPT 好像还没学到。

    一方面感觉 ChatGPT 变笨了,另一方面,ChatGPT 做技术选型讨论的时候,它总是和稀泥,这也好,那也好。
    wakarimasen
    wakarimasen
    Jan 24, 2024 via Android❤️1
    25
    这也算月经贴了。
    你要做什么东西,你团队的人都会什么技术你是一概不谈,既然这样的话直接 PyQt 吧
    realJamespond
    realJamespond
    Jan 24, 2024
    26
    没人提 flutter?虽然不懂
    xiaoxinshiwo
    xiaoxinshiwo
    Jan 24, 2024
    27
    python 就 QT
    alleluya
    alleluya
    Jan 24, 2024
    28
    @realJamespond 图啥呢 op 又不考虑移动端 多窗口支持也有问题 单纯桌面客户端技术选择足够纠结了...
    vialon17
    vialon17
    Jan 24, 2024
    29
    推一下 qt/pyside 原因:名字好听
    murmur
    murmur
    Jan 24, 2024
    30
    @realJamespond flutter 那屎语法太难学了
    Befehishaber
    Befehishaber
    Jan 24, 2024
    31
    Avalonia
    Promtheus
    Promtheus
    Jan 24, 2024
    32
    有大佬知道 QT 的界面怎么美化吗 我写的界面有点丑啊。
    LXGMAX
    LXGMAX
    Jan 24, 2024
    33
    @Promtheus 去找别人的 css style 抄上去
    或者交给美工
    langhuishan
    langhuishan
    Jan 24, 2024
    34
    @iorilu 打包发布的时候,就各种打不开。
    broken123
    broken123
    Jan 24, 2024❤️1
    35
    必然是 flutter 开发 1 年半 已经喜欢上了
    yidadaa
    yidadaa
    Jan 24, 2024
    36
    别选了,electron 除了打包体积大点,开发体验和生态都是断层领先,根本不存在你说的性能问题。非得注重体积,就用 flutter ,但是 flutter desktop 也没什么正经团队在用,喜欢踩坑可以试试。Qt 和 WPF 就别看了,老登公司才用这些玩意儿,开发体验还停留在上个时代。
    xieren58
    xieren58
    Jan 24, 2024
    37
    但凡用过原生开发, 就不想用 electron 这玩意了... electron 启动慢的一逼... 用 Avalonia 做了几个项目了... 从 electron, wpf 转到 Avalonia 的...
    txzh007
    txzh007
    Jan 24, 2024
    38
    还是看需求,如果开发一个窗口套壳,将第三方 exe 包裹在自己写的应用里,这个需求 electron 就完全没办法做.
    ayang23
    ayang23
    Jan 24, 2024
    39
    qt 或者 pyqt ,最近我把各种方案都测试了一遍。当然 electron 也不错,和 qt 生态位完全是错开的。
    qml 也是套了一个浏览器,虽然性能比 electron 高,但写起来肯定不如 react 之类的爽,编译慢,错误提示垃圾,关键还有学习成本,排除。
    ayang23
    ayang23
    Jan 24, 2024
    40
    @Promtheus qtwidget 支持一些简单的 css
    murmur
    murmur
    Jan 24, 2024
    41
    @txzh007 ??那你自己的应用开一个 webview 不就可以了么,然后自己提供 native 接口
    atpex
    atpex
    Jan 24, 2024
    42
    electron 做出来的东西怎么说呢,有一种黏糊糊的感觉,看着好像很 cool (寨味儿很冲),但总觉得哪里不舒服。
    murmur
    murmur
    Jan 24, 2024
    43
    @atpex 这还不是 ui 问题,好看的应用是要自己设计的,qq 音乐这些不还是 webview 套壳,只不过不是直接 electron ,改成 cef 了
    lujiaxing
    lujiaxing
    Jan 24, 2024
    44
    Electron 是首选。
    别关心什么内存占用的问题。那不是你该关心的问题。除非涉及到 C++ 交互,否则 Electron 永远是不二之选。界面美观开发简单。没什么比 Electron 更合适的。

    然后其次是 Avalonia 。性能强悍内存占用低,可 AOT 所以也不需要什么 .NET 环境。打包好了到处都能用。尤其涉及到界面复杂或者带动效/3D/图表的情况下,Avalonia 基本上可以说是唯一选择。

    最后是 QT 。老牌 GUI 开发框架了。性能极其强悍,但是绑定 C++。对 C++ 熟悉的可以考虑。
    murmur
    murmur
    Jan 24, 2024
    45
    推 flutter 的,挑明了说,完全的 kpi 导向,难用,难写,但是容易出 kpi ,别人不好接

    electron 是最适合的,国内用的也最广,ui 好设计,好学,会做网页就会做程序,各种 ui 库随便用

    如果看重底层就 cef ,都是 h5 套壳,看是壳有多重而已

    再看重底层就 qt ,wps ,davinci 这些都是 qt 做的,再头铁点,比如 affinity photo ,怀疑真的是双端自己写,一堆 c 和 wpf 的库
    hez2010
    hez2010
    Jan 24, 2024 via Android❤️1
    46
    @yuyue001 拆分 axaml 一般做法是分 template 出去放到资源字典里来使用。
    dcsuibian
    dcsuibian
    Jan 24, 2024
    47
    如果是我来开发的话,我会优先考虑直接做成 Web 版(毕竟现在 Web 能调用的 API 也很多),如果真的本地调用特别多再考虑用 Electron
    cktsun
    cktsun
    Jan 24, 2024 via iPad
    48
    @tool2d 人家是期待討論的過程🥹
    你可能不太了解。這些決策類盡量不要交給 GPT ,還是要個人深入了解,沒深入了解過等同沒參與過開發過程。
    txzh007
    txzh007
    Jan 24, 2024
    49
    @murmur 如果我选择嵌套第三方 exe 肯定需要第三方 exe 的运行界面啊. 可能是需求不一样,我这边是将三维云流化,这种操作太多了
    lstz
    lstz
    Jan 24, 2024 via Android
    50
    我很是推荐 tauri ,我的开源项目 github.com/work7z/LafTools 就计划用它来作为桌面端的支持。

    我这个项目是 go 写的,但为什么桌面端不用 wails 而是 tauri 呢?原因如下

    1 ,支持桌面呼出,这个貌似 wails.io 目前还做不到
    2 ,软件体积小,这对于开箱即用的工具箱来说尤其重要,如果你想体积 30mb 以内,就用它!
    3 ,rust 逼格高。当然,我不想拉踩,只是我个人的角度来看....
    4 ,web 生态直接用起来!

    其实,很多人希望原生 ui ,无非就是太卡了或者不方便用。但其实还是用户体验跟程序设计的原因,用户只在乎颜值!功能!效率!

    其他内存占用多少之类的,很少会有人真的这么看
    lstz
    lstz
    Jan 24, 2024 via Android
    51
    至于 rust 难度的问题,其实有了 gpt4 ,很多困难都会迎刃而解,再不济也有现成的 awesome-tauri 给你用

    关于 electron ,假如我要做面向大众的产品,那是肯定用的,无论是兼容性还是视觉统一性

    然后就我个人而言,我的产品用户都是专业人士,他们应该都会安装最新的浏览器,不太可能会用 ie11 了吧。。。
    yooomu
    yooomu
    Jan 24, 2024
    52
    electron 啊,好写,好看,跨平台。除了占内存占硬盘。至于性能,js 性能挺强的,不过我不知道你对性能要求有多高
    murmur
    murmur
    Jan 24, 2024
    53
    @txzh007 三围那你可以考虑 unity ,用游戏引擎做 3d 比自己开发简单多了
    ljsh093
    ljsh093
    Jan 24, 2024
    54
    @lyusantu #21 文艺复兴是吧
    leyoumake1997
    leyoumake1997
    Jan 24, 2024
    55
    大项目的话,后端业务功能较多,推荐 wails 。目前 wails 也支持多窗口(若是你觉得复杂可以窗内多 Dialog )。wails 打包最小体积也只有 10MB 左右(客户端运行只需要安装个 Edge 扩展即可)。另外 wails 是基于 golang 研发出来的,天生并发性能好,组件库都是源生代码。
    duan602728596
    duan602728596
    Jan 24, 2024
    56
    Electron 启动慢,可能是初始化的时候启动慢,也可能是启动时同步加载了所有 node 的模块
    rockxsj
    rockxsj
    Jan 24, 2024
    57
    avalonia 还能用 C# 美滋滋
    wangtian2020
    wangtian2020
    Jan 24, 2024
    58
    electron 🤓
    不是什么好就用什么,而是我会什么就用什么,我只会 electron ,最近在用 electron 狠狠的写上位机跟底层通信,nodejs 直接 JavaScript 一把梭了
    iorilu
    iorilu
    Jan 24, 2024
    59
    @langhuishan 是要花点时间, 但肯定可以用 pyinstaller 打包得

    我自己得软件就是用这个得, win 和 mac 都可以
    Nosub
    Nosub
    Jan 24, 2024 via iPhone
    60
    不建议 QT 和 WPF ,用 electron 或是 Java 的 swing 都可以,学习 c++的时间成本太高,c#客户端生态太差,flutter 不了解不评价,你就想想现在主流前端和后端用的啥,就可以做出选择了。
    jackOff
    jackOff
    Jan 24, 2024
    61
    qt+go
    jianchang512
    jianchang512
    Jan 24, 2024 via Android
    62
    pyqt 性能够用,开发方便快速
    kaedeair
    kaedeair
    Jan 24, 2024❤️1
    63
    后排提醒 pyqt 是 gpl 协议
    rb6221
    rb6221
    Jan 24, 2024
    64
    你性能要求很高? QQ 都用 electron 了,不要预设一些有的没的,我个人猜你是非企业级项目,性能要求完全够用了。(我为什么猜你是非企业级项目?因为你压根没提到 WPF ,看来是个人开发,喜欢用新技术的那种)
    不需要跨平台的话,win 直接选 webview2 ,比 electron 包体小
    synrise
    synrise
    Jan 24, 2024
    65
    目前来看支持 qt 和 electron 的最多,我更熟悉 python 所以倾向于 qt ,但是感觉 qt 的界面要想做的好看,方便程度还是比 electron 差了一些
    Elroooo0Y
    Elroooo0Y
    Jan 24, 2024
    66
    pyside6, 上手难度低 ,快速实现功能.
    iorilu
    iorilu
    Jan 24, 2024 via Android
    67
    qt 最大问题就是没那么多 web 组件库,样式难看点,但一般工具软件也不用太在意

    很在意外观的建议还是用 web 那套

    当然了,qt 本身也有 webview 组件,可以做到 electron 一样的事
    ty10086
    ty10086
    Jan 25, 2024❤️1
    68
    正好因为项目 GUI 界面全平台兼容需要,翻到历史贴有人对比过各种。
    最后我选择了 H2O WAVE (水波)
    https://wave.h2o.ai/docs/getting-started

    H2O Wave 是一个软件堆栈,用于完全使用 Python 构建美观、低延迟、实时、基于浏览器的应用程序和仪表板,而无需使用 HTML 、Javascript 或 CSS 。

    借楼问问:以后长期用这个 widgets 组件开发 GUI 了,有人愿意做长久支持吗?
    lijy91
    lijy91
    Jan 25, 2024❤️1
    69
    @yidadaa 微信输入法目前就在用 Flutter desktop ,还有 360 的极连快传也在用,我最近搞了个仓库做了个 flutter desktop apps 清单 https://github.com/leanflutter/flutter-apps
    sunmker
    sunmker
    Jan 25, 2024❤️2
    70
    还有人说“c#客户端生态太差”???
    layxy
    layxy
    Jan 25, 2024❤️1
    71
    lazarus,跨平台,前提你得会 Free Pascal
    v2yllhwa
    v2yllhwa
    Jan 25, 2024 via Android
    72
    其实 pywebview 也不错,nuitka 打包不到 10M ,不过没有 tauri 和 wails 成熟
    mh
    mh
    Jan 25, 2024
    73
    QML FluentUI ,之前看到这个国人开发的库,颜值不错,不知道实际用起来怎么样
    googleaccount
    googleaccount
    Jan 25, 2024
    74
    不知道选啥就选 Electron
    atpex
    atpex
    Jan 25, 2024
    75
    @murmur 嗯,确实设计做好了,其实都一样。只能说 electron 的产品基数大,所以体感千奇百怪了。
    antfu
    antfu
    Jan 25, 2024
    76
    新版 qq 就行 electron 感觉还行
    daokedao
    daokedao
    Jan 25, 2024
    77
    新版 qq 用的是 electron 还是 cef ?
    masterclock
    masterclock
    Jan 25, 2024
    78
    在用 qt ,qml ,总结就是别用 qml ,别用 qml ,别用 qml ,谨慎选择 qt
    ShadowPower
    ShadowPower
    Jan 25, 2024
    79
    @sunmker 也许是和 Web 生态比……
    Narcissu5
    Narcissu5
    Jan 25, 2024
    80
    @tool2d gpt 的知识库到 2024 了么?
    hongyi2020
    hongyi2020
    Jan 25, 2024
    81
    想做一个图像处理相关的软件,推荐用什么开发?
    iDeveloper666
    iDeveloper666
    Jan 25, 2024
    82
    桌面端个人不太推荐使用 Compose Multiplatform 。

    相比移动开发来说,只有可以继续用 kotlin 这一个优势,官方目前似乎没有提供一个比较完整的开发方案,路由/状态管理/基础的配置读写等等这些都依赖自己或第三方实现。

    目前用来写了一个小工具,功能可以实现,但过程感觉很费劲。
    HaroldFinchNYC
    HaroldFinchNYC
    Jan 25, 2024
    83
    真实一场持久战
    HaroldFinchNYC
    HaroldFinchNYC
    Jan 25, 2024
    84
    我准备先试试 electron 和 wails

    先做几个 app 玩具试试

    然后再考虑下一步

    electron 确实,除了体积大,启动不快,对于一个前端程序员,没有更合适的了
    Nosub
    Nosub
    Jan 25, 2024 via iPhone
    85
    @sunmker c#客户端生态的确差,你看过有几个互联网公司基于 c#开发客户端的例子,微软自己除外,做些简单的应用还好,你要要调用一些知名的第三方库,非常难受,比如 ffmpeg ,OpenCV ,sdl ,webrtc 这些。
    xujinkai
    xujinkai
    Jan 25, 2024 via Android
    86
    WPF 套一个 Webview2 我目前是这么做的
    BYDH
    BYDH
    Jan 25, 2024
    87
    比起现代化的桌面应用,我更倾向于在个人项目中写 Terminal GUI ,主打一个反差强烈
    zsan3653nj
    zsan3653nj
    Jan 25, 2024
    88
    wxpython
    westoy
    westoy
    Jan 25, 2024
    89
    #23 @yuyue001

    作为 python 圈 GUI 的大佬,bt 作者开 chia 这个坑的时候一言不合直接用了 electron......
    yuhuai
    yuhuai
    Jan 25, 2024
    90
    @Nosub 互联网企业要求不高的开发客户端短平快,但不代表没有,而且你说的所谓的知名第三方,nuget 上都有,就算没有,c#调用 c++ dll 混编也比 electron 这些简单,不要对你不了解的领域随意贴标签
    fox0001
    fox0001
    Jan 25, 2024 via Android❤️1
    91
    @realJamespond #26 推荐 Flutter
    yangzzzzzz
    yangzzzzzz
    Jan 25, 2024
    92
    win 端还是 winui3 好用
    ybz
    ybz
    PRO
    Jan 25, 2024❤️1
    93
    再等等,Flutter 马上就要出多窗口了
    yidadaa
    yidadaa
    Jan 25, 2024
    94
    @lijy91 微信输入法安装包都 132MB 了,很难不让人怀疑里面有没有塞个浏览器内核。
    okhao8801
    okhao8801
    Jan 25, 2024❤️1
    95
    @murmur 还好吧,我写了好多年 Android 原生了,写了 flutter 之后发现太方便了,现在不太愿意写原生了,嫌太啰嗦,很多认识的人也是这个感觉
    Nosub
    Nosub
    Jan 25, 2024 via iPhone
    96
    @yuhuai 或是你举几个例子,国内互联网公司有用 c#做桌面客户端,开发比较成功的案例,不要把别人不用,一律说成别人不懂,别人追求短平快,都是别人的原因。
    roundgis
    roundgis
    Jan 25, 2024 via Android
    97
    @ybz 預計什麼時候?
    murmur
    murmur
    Jan 25, 2024
    98
    @okhao8801 跟 h5 和 rn 比语法就一坨 shit ,真的,组件一堆属性我忍了,布局也要专门的组件套
    okhao8801
    okhao8801
    Jan 25, 2024
    99
    @murmur 哈哈哈,是有点,不过有了扩展函数后,用 style 这个库就很方便了,就跟链式调用一样,可以少写很多嵌套
    wang5635099
    wang5635099
    Jan 25, 2024
    100
    @stinkytofu 哈哈哈哈
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2895 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 182ms · UTC 13:00 · PVG 21:00 · LAX 05:00 · JFK 08:00
    ♥ Do have faith in what you're doing.