V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raylei
V2EX  ›  程序员

现在桌面端的主流技术栈有怎样的?

  •  
  •   raylei · 278 天前 · 6849 次点击
    这是一个创建于 278 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很久没有玩桌面端了,还停留在以前 mfc 记忆中。知道桌面端的技术栈在这些年已经天翻地覆了,mfc 也没人用了。所以想请问一下,如果你来开发 win 的桌面端,会使用怎么样的技术栈来实现呢?

    76 条回复    2023-07-28 10:25:17 +08:00
    mokiki
        1
    mokiki  
       278 天前   ❤️ 1
    Qt C++
    mineralsalt
        2
    mineralsalt  
       278 天前   ❤️ 3
    现在主流就是套壳浏览器, 真的是非常的恼人。
    lsk569937453
        3
    lsk569937453  
       278 天前
    如果不跨端,只做 windows 桌面应用。那只有 WinForms 这一个最优解。

    如果跨端,看你会什么。

    会 c++,就 QT ,性能强,缺点是得折腾(玩 c++不就是为了折腾?)。
    会 node.js+前端,就 electron ,缺点是打出的包 size 很大.

    ps:最近在学 rust,发现 tauri 也挺好用的,打出的包挺小的。
    cnbatch
        4
    cnbatch  
       278 天前   ❤️ 1
    MFC 时代不是还有 Qt 和 wxWidgets 嘛,这两个现在仍然活着。虽然有不少竞争技术,但 Qt 仍然未没落。
    akira
        5
    akira  
       278 天前
    看需求。 大部分需求,套个浏览器就足够了。
    xtreme1
        6
    xtreme1  
       278 天前
    套壳 avalonia qt
    zsxzy
        7
    zsxzy  
       278 天前
    duilib 小巧好用, 还基于 mfc, 一个字, 稳
    westerndream
        8
    westerndream  
       278 天前
    感觉可以关注下 webview2 ,就类似安卓 webview 那样的,共用 edge 内核,解决了像 electron 那样打包一堆 chromium
    x77
        9
    x77  
       278 天前
    - 原生,技术比较专业的 QT 比较多。GTK 的也有,但是很少。

    - .NET ,微软系的 UWP 、WPF ,不过第三方用 .NET 搞桌面的也不多见。

    - 基于 Web 框架,个人不看好,不过有的搞得挺好

    - 跨平台框架,像 Flutter ,比较早期,这类优势明显,比较有潜力
    owen800q
        10
    owen800q  
       278 天前 via iPhone
    Pake, 好像也是 webview 套, 但只有几 m 大小
    raylei
        11
    raylei  
    OP
       278 天前
    @akira 感觉现在就这样,好像好多都是基于浏览器,js 打遍全宇宙
    raylei
        12
    raylei  
    OP
       278 天前
    @mineralsalt 对吧,研究一翻后感觉好多都是用 js ,所以非常迷惘来开了个贴
    flyqie
        13
    flyqie  
       278 天前 via Android
    要么 qt 要么 electron 。

    其他的都不适合跨平台商业化项目。
    17681880207
        14
    17681880207  
       278 天前   ❤️ 1
    为啥大家都这么在意 Electron 打包之后的这点 size ,就算大,也没有大到离谱吧,我个人认为这点体积的安装包,还没有达到让用户可以拒绝的地步吧。相反,带来的跨平台的效率优势,我觉得 Electron 反而更值得投入了~😁
    2wex
        15
    2wex  
       278 天前
    @17681880207 大小不是根本问题,问题是大量不必要的冗余,这对优化强迫症来说是非常痛苦的(而且极客们基本都是优化强迫症)
    codehz
        16
    codehz  
       278 天前 via iPhone
    3202 年了,XAML Island 也可以做到几百 k 左右大小了
    putaozhenhaochi
        17
    putaozhenhaochi  
       278 天前 via iPhone
    浏览器里写 UI 是最简单和速度的
    thinkm
        18
    thinkm  
       278 天前   ❤️ 5
    @17681880207 99%的普通用户不会在意这些东西,对他们来说只是点一下下载,点一下安装的事情, 现在千兆宽带的时代,20M 和 200M 的安装包下载时间就差个几秒钟,用户根本体会不到。反而他们会觉得 UI 很好看,比你什么 20M 用 QT 写的好看和现代很多。
    只有程序员或者极客才去关注大小之类的,然后拿到网上说。
    loading
        19
    loading  
       278 天前
    如果是简单应用,eletron 最简单,但交互要简单,像 MFC 的拖放 table 或者 tree 控件,一般人用 eletron 却很难写出类似的体验。

    有些比较菜的 boss ,你安装包越大,他觉得越牛。(嗯,确实花功夫了。。。)
    jearyvon
        20
    jearyvon  
       278 天前
    QQ 都用了类似 electron 了 vscode 也是 electron 。缺点对用户来说很明显。优点对于开发和公司来说太明显了。
    mmdsun
        21
    mmdsun  
       278 天前
    darknoll
        22
    darknoll  
       278 天前
    只有 Electron
    blinue
        23
    blinue  
       278 天前
    @codehz #16 为了美观肯定要上 WinUI ,最终体积在 25M 左右。只面向 Win11 可以用 dynamic dependency 引入。
    codehz
        24
    codehz  
       278 天前
    @blinue 用这个,可以做的很小 https://www.nuget.org/packages/Mile.Xaml
    blinue
        25
    blinue  
       278 天前
    @codehz #24 我也在关注,和原生体验有差别,因为 WinUI 有很多自定义控件,而这个项目只移植了样式。我的 demo: https://github.com/Blinue/Xaml-Islands-Cpp
    star7th
        26
    star7th  
       278 天前
    除了某些对性能要求很高的场合,一般用 Electron 即可 。也别信那些吐槽 Electron 的人,他们是从使用者出发的,希望使用的软件超高的性能。
    但对创作者而言,Electron 是最佳的技术路线,能平衡开发成本和效果。
    star7th
        27
    star7th  
       278 天前
    tauri 也别用,生态还不够成熟 。如果对软件体积有极致的需求。
    shyangs
        28
    shyangs  
       277 天前
    樓主都說了是 win 的桌面端,那就選 C# ( .NET ),

    C# 開發速度比 C++ 快,執行速度比 JS 快. windows 預設也安裝了 .NET Framework.
    horizon
        29
    horizon  
       277 天前
    @owen800q #10
    老哥。。对自己不了解的慎重推荐。。
    iOCZ
        30
    iOCZ  
       277 天前
    QQ 选 electron 无疑是一种倒退
    liruifengv
        31
    liruifengv  
       277 天前
    tauri 。使用 webview2 ,只开发 windows ,并且不兼容老系统的话没问题的。
    Flybear
        32
    Flybear  
       277 天前
    不跨平台原生就 WPF 或者 WinUI 3 。
    2023 年了,别再用 MFC 或者 WinForms 了,4K 屏看着眼睛都要瞎了。
    unco020511
        33
    unco020511  
       277 天前
    Electron 大概率是首选
    henryhu
        34
    henryhu  
       277 天前
    windows7 还有很多用户,electron 打包结果在 win7 上跑没问题吧?
    lxrmido
        35
    lxrmido  
       277 天前
    electron ,相比起效率,对于现在的网络带宽和硬盘价格来说,多出来一个浏览器内核已经不是问题了。
    kimown
        36
    kimown  
       277 天前
    electron, 天然的跨平台
    wjx0912
        37
    wjx0912  
       277 天前
    一个 electron 多 100M 。装 50 个软件,也才 5t 。现在的硬盘也不会在乎这么点空间吧
    cs419
        38
    cs419  
       277 天前
    说个国人开发的 编程语言 aardio
    https://aardio.com/
    https://bbs.aardio.com/

    可以开发 windows 桌面软件
    大佬更新频繁 还给这个语言写了 IDE

    近段时间停更了 说是老婆癌症
    要全身心的去照顾老婆
    扫码出两百块支持了一下
    不知道以后还会不会再更新
    H0H
        39
    H0H  
       277 天前
    @cs419 38 ,AAuto 、aardio 抄袭自 Lazarus ,知乎上有讨论,当时的主题叫《 AAuto 为何更名为 aardio?》。

    当然,抄袭没多大问题,但是 aardio 是作者一个人维护,不开源,脾气又很差,各种问题都不回答。而且很奇怪的是,对于 JavaScript 调用 windows API 这种涉及到参数转换的,作者居然不知道怎么做。这本应该是他最熟悉的才对,因为 JavaScript 要调用 Windows API 肯定涉及到参数来回的转换啊,否则他这个工具咋写出来的?但看他在论坛中认真回复其他人在工作中遇到传参转换的,他没在开玩笑,完全是认真的说他也不清楚提问人给的场景下具体应该怎么做。把我都看懵了。说他水平差吧,能搞出这么强大的编程语言;说他很强吧,又是基础的问题都不清楚。

    这种情况下,如果是在家里给自己写几个小工具,用这个语言没问题。如果是在公司里开发商业软件,那风险就太大了,遇到问题只能靠自己想办法 debug ,网上基本上没讨论的。哪天作者弃坑了,那已经开发出了的各种小工具要完整支持下一代 windows 该怎么办?

    aardio 我自己在家里也用它开发了个小工具,但只是长时间做了 test ,没敢正式使用,主要是怕里面有恶意代码。而且它那个 IDE 也让我没了信心。作者宣传的是开发的小工具运行很迅速,但它的 IDE 我记得就要 5 秒钟才能打开,这说明运行也不迅速啊。这可能就证明了 aardio 只适合做玩具,真用来开发大一点的工具,性能恐怕是大问题。唯一的优点,就剩生成的 exe 很小。但商用环境下 exe 大小往往不是核心问题。既然这样,为什么不用 Electron ?
    jones2000
        40
    jones2000  
       277 天前
    @wjx0912 带宽,硬盘不是问题, 关键是运行的时候如何抢占更多的资源( cpu,内存,磁盘读写等等), 这样才能让自己的程序丝滑, 把被人的程序卡死。
    xujinkai
        41
    xujinkai  
       277 天前 via Android
    C#写服务肯定不错,但 XAML 那套搞的我头疼,最近在研究直接 WPF 窗口套 webview2 。
    虽然前端工程那一套也得学,但个人感觉比 WPF 简单些还漂亮。
    lisongeee
        42
    lisongeee  
       277 天前   ❤️ 1
    上面说的一堆技术基本都不支持 Hot Module Replacement

    不支持 Hot Module Replacement 的开发框架 开发效率/体验 都很感人

    Hot Module Replacement 对旧时代框架在某种程度上基本是降维打击
    huohei
        43
    huohei  
       277 天前 via iPhone
    flutter 做桌面端玩具还是很有趣的
    aprilandjan
        44
    aprilandjan  
       277 天前 via iPhone   ❤️ 1
    @henryhu electron v19 及以下支持 win7 ,v20+开始就不支持了,主要是 chrome 104 之后放弃了对 win7 的支持。没什么特别诉求,用低版本一样的,问题不大
    toomlo
        45
    toomlo  
       277 天前
    感觉 jetbrains 家的编辑器很好看,记忆里好像是基于 swing 还是 fx 独立写的一套 UI 框架来着,有懂的大佬可以说说~
    webcape233
        46
    webcape233  
       277 天前 via iPhone
    我用 elctron 软件:什么辣鸡玩意

    我写 electron 软件:真香啊
    zjsxwc
        47
    zjsxwc  
       277 天前 via Android
    Windows 上的 electron QQ 150MB ,卧槽真大。
    手机上的 QQ 268MB ,无所谓。
    wxf666
        48
    wxf666  
       277 天前
    Sciter 咋样?最近才注意到。

    - 体积小至 5MB ,不依赖浏览器
    - 可使用 Html/CSS/JavaScript 开发
    - 跨 Windows 、Linux 、MacOS 三端
    - 有 GPU 渲染加速( WinXP 好像没有)

    个人可免费使用,付费版开源?
    loading
        49
    loading  
       277 天前
    @H0H #39 aauto 作者今年发公告了,突发家属癌症要全力照顾。aardio 我用了挺多次,真的好用,可以说是 windows gui 自带电池的好东西,关键还是这也不收个费什么的,非常良心。

    真心感谢 aardio
    wuzhewuyou
        50
    wuzhewuyou  
       277 天前
    万物基于 web ,话说多年没有开发桌面需求了
    Jammar
        51
    Jammar  
       277 天前
    大部分新桌面客户端 electron 已经一统天下了,最不缺的就是前端,开发成本极低
    x2420390517
        52
    x2420390517  
       277 天前
    应该的体积现在好像真的不是什么大问题了,现在硬盘的价格也下来了,就是内存占用的问题有点影响用户体验。
    kangyan
        53
    kangyan  
       277 天前
    最近玩了一下 webview2 ,空包构建出来 80mb ,不知道如何去掉 runtime
    ajan
        54
    ajan  
       277 天前 via Android
    @owen800q Pake 编译的 windows 端是利用了 webview2 组件,这货基本上就等于下载安装了一个 edge 浏览器,首次运行会检测 webview2 组件,没有安装就会下载 安装,禁止 webview2 组件联网 会导致编译的 exe 打开后出现网页打不开,且编译的 exe 并不小,且不包含 webview2 组件。
    flexbug
        55
    flexbug  
       277 天前
    喜报,你已经安装 123 个 electron
    tanranran
        56
    tanranran  
       277 天前
    主流厂商用啥,啥就成熟。做软件,除了爱心发电,其它都得考虑商业能力
    ruoxie
        57
    ruoxie  
       277 天前   ❤️ 1
    @wjx0912 鬼才,5G=5T
    xbchaonba
        58
    xbchaonba  
       277 天前
    @wjx0912 不是 5g 吗
    wxf666
        59
    wxf666  
       277 天前   ❤️ 1
    @17681880207 #14
    @thinkm #18
    @star7th #26
    @lxrmido #35
    @wjx0912 #37
    @Jammar #51

    用 Electron 来写软件的,会不会意味着软件开发水平的下降?导致开发出来的软件体验很差?

    比如 [这个帖子]( /t/955422 ) 里提到的几个 Electron 应用:

    - 夸克网盘:**上传**一个 50 GB 的文件,要**写**硬盘几 TB (滥用 IndexedDB 导致)
    - 天翼云盘:下载文件时,每小时要**额外写** 40 GB 。下载 4 GB 文件,读写 170W 次文件。。

    会不会 Electron 屏蔽了底层细节,抽象得很好,开发人员对代码逻辑的成本高低没有感知,就瞎 JB 写了。。
    Vindroid
        60
    Vindroid  
       277 天前
    用的 Qt(C++),感觉不会 c++也能玩转 Qt ,封装得很好,当 java 来写都没什么问题,还能跨平台,虽然成本不小
    PVXLL
        61
    PVXLL  
       277 天前 via iPhone
    html
    lsk569937453
        62
    lsk569937453  
       277 天前
    @Vindroid 不会 c++也能玩转 Qt ---->这句话是不是暗示 PyQt
    Jammar
        63
    Jammar  
       277 天前
    @wxf666 electron 是由前端人员完成,前端懂个锤子操作系统的内部函数逻辑,大公司比如钉钉都有相应的优化,至于其他的,能跑就行,都不一定需要跨端
    sunrain
        64
    sunrain  
       277 天前
    javafx + graalvm
    thinkm
        65
    thinkm  
       277 天前
    @wxf666 看你写软件的目的,如果你的目的是提升自己能力就不要用 Electron ,如果你的目的是开发方便快捷,并提升用户体验就用 Electron
    BG7ZAG
        66
    BG7ZAG  
       277 天前
    electron 或者 flutter
    StateMa
        67
    StateMa  
       276 天前
    electron
    QT
    winfrom
    1 最简单入门最快
    23 都是老熟人了
    至于 electron 的大小问题我记得可以替换内核来减小包大小,winfrom 里能替换 web 内核我用过。electron 之前见过。
    D6IIx
        68
    D6IIx  
       276 天前
    @putaozhenhaochi 如何打包成 exe 部署呢?版本迭代的数据如何保留?
    putaozhenhaochi
        69
    putaozhenhaochi  
       276 天前 via iPhone
    @D6llx electron 有打包工具的 数据你搞个 sqlite ?
    zgl263885
        70
    zgl263885  
       276 天前 via iPhone
    @lsk569937453 wpf 表示不服
    star7th
        71
    star7th  
       276 天前
    @wxf666

    这个不是 Electron 的问题。是那个程序员自己的问题。如果 Electron 这么简单都搞出这么明显的 bug ,开发啥都有 bug 。
    ljsh093
        72
    ljsh093  
       276 天前
    @wxf666 #48 扭曲的 JS 语法感觉是个坑,不敢用
    wxf666
        73
    wxf666  
       274 天前
    @ljsh093 #72 它的 js 不是用的 quickjs 吗?标准 ES2020 ?
    wxf666
        74
    wxf666  
       274 天前
    @Jammar #63 基本的计算机知识得要有吧。。哪有一个 4GB 文件,分成 18W 份临时文件的。。

    @thinkm #65 提升用户体验,是说好看吗?

    @star7th #71 不一定。天翼云盘那个可能是程序员的问题,就算不用 Electron ,换其他工具也一样。

    但夸克网盘那个,可能真的是 Electron 封装得太好,导致开发者以为,预先分片任务到 IndexedDB 没啥代价了。。(结果搞了 几 TB 写入出来。。)

    我的意思是,就是因为简单,所以什么人都能胜任,但深入的细节可能由于自身没有知识储备,处理不好,所以质量可能比 QT 等软件的差。。

    会 QT 之类的,应该就暗含对计算机比较熟悉的前提条件了吧?那开发出来的软件质量高,也是大概率的事情?
    star7th
        75
    star7th  
       274 天前
    @wxf666

    用汇编的人,对计算机底层更熟悉,但也不见得用汇编来写更好。事情不能单纯从 越接近底层就技术练的越好的角度来看。

    不排除某些需要性能的场景,要用原生开发死磕性能。但是大部分场景下,没那么多在乎性能,尤其是现在消费级 pc 市场的电脑性能已经很棒了。再在乎这么点性能,就没必要了。开发成本,管理成本,更重要。用几分之一的成本,做一个尚可的应用 ,这个诱惑力太大了,潮流趋势根本不可阻挡,Electron 类似技术肯定会占领桌面开发的半壁江山。
    ljsh093
        76
    ljsh093  
       274 天前
    @wxf666 #73 搜了下才知道我大清亡了,以前确实不是标准 JS ,那现在看来个人工具类带 ui 的程序可以用用吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2789 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 05:35 · PVG 13:35 · LAX 22:35 · JFK 01:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.