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

目前想写一个桌面应用,请问下技术栈选择

  •  
  •   a1oyss0925 · 9 天前 · 6830 次点击

    主要目的就是写着玩,给自己找点事情做,当然丰富下技术栈有利于找工作那是更好

    大致了解了下相关技术:electron 、tauri 、wails 、avalonia

    说实话 tauri 是真的不太想选,rust 感觉学习成本太高了。

    现在的目标就是写个邮件客户端,希望大伙给点意见

    90 条回复    2024-11-12 01:40:46 +08:00
    jeesk
        1
    jeesk  
       9 天前 via Android
    要不要多窗口? 不要多窗口就 wails , 否则 electron 。
    musi
        2
    musi  
       9 天前 via iPhone
    问就是 Electron
    你见过国内有哪些大厂的产品用 tarui wails avalonia
    Electron 我能给你说出来一堆
    xiaoqidev
        3
    xiaoqidev  
       9 天前   ❤️ 3
    我不会 rust ,但我已经用 Tauri 开发了十来个应用,其中包含多个商业应用和 20W 用户的 AI 抠图 /t/1059035
    yoiteshaw
        4
    yoiteshaw  
       9 天前
    Electron ,自从我在某全国有名的医院的排队系统看到 Electron 那熟悉的默认图标,我明白了它是经过大型业务的“检验”的。
    profchaos
        5
    profchaos  
       9 天前
    试了下 avalonia 的 dx 也太落后了,不像 web ,flutter 那种可以 hot reload 的,就是改一下 code behind 就要重新 build 一次,虽然 avalonia 好像评价还不错,但是我不是很喜欢
    COW
        6
    COW  
       9 天前
    反正是自己做着玩,就按名字选呗,avalonia 听着很强的感觉。
    flmn
        7
    flmn  
       9 天前   ❤️ 2
    Tauri 应用其实是以 js 为中心的。业务代码是 js 不是 rust 。
    COW
        8
    COW  
       9 天前   ❤️ 1
    @xiaoqidev 真的假的,这玩意不会 rust 也能做?
    a1oyss0925
        9
    a1oyss0925  
    OP
       9 天前
    @jeesk 没这方面需求
    @xiaoqidev 太强了,我去找找相关 demo 看看代码量
    JoeDH
        10
    JoeDH  
       9 天前
    electron 吧
    xiaoqidev
        11
    xiaoqidev  
       9 天前   ❤️ 1
    @COW #8 大家对 Tauri 存在误解,事实就是不写一行 rust 代码页面也能开发 Tauri 应用,任意前端技术栈就够,不过大多数情况下我也不推荐 Tauri ,新上手确实很难,用过几次之后才会觉得真香,遇到各种问题也确实需要 rust 解决,我一般找现有的库 + AI 解决,走过一些弯路,现在只考虑 Tauri ,当然我的应用大都不复杂,目前没遇到无法解决的问题
    shintendo
        12
    shintendo  
       9 天前
    额,Tauri 不需要写 Rust 的
    crackidz
        13
    crackidz  
       9 天前
    看你的后端代码需不需要大量的非前端代码,比如邮件客户端协议解析之类的。否则你要考虑一下写 Rust 是不是 OK...

    其他人的例子不太一样的地方是大部分功能是 web 就可以满足的,最多使用一些访问框架封装过的功能足以
    iOCZS
        14
    iOCZS  
       9 天前
    找工作的话,electron 或 qt
    jones2000
        15
    jones2000  
       9 天前
    vue 开发页面, 然后淘宝上找人包个壳,也就 200 块。 只要是页面都可以。没必要什么都自己搞, 多麻烦。
    angrylid
        16
    angrylid  
       9 天前
    你这两个需求都是打架的
    如果是出于找工作,为什么不先看一下招聘平台现在还有多少桌面客户端的工作呢
    写着玩的话,光微软的技术栈应该就有 MAUI/Xamarin, WinUI/Uno Platform, WPF/Avalonia 这三种 XAML 方言……
    niubee1
        17
    niubee1  
       9 天前   ❤️ 1
    Tauri 可以不用写 Rust 代码,但是会写 Rust 代码,可以让你的应用原地起飞
    ysc3839
        18
    ysc3839  
       9 天前 via Android
    Electron 就完事了
    yoiteshaw
        19
    yoiteshaw  
       9 天前   ❤️ 1
    @xiaoqidev
    @shintendo
    想请问一下为什么 tauri 不需要写 rust ?
    如果是纯 js 的工作,意思是先用 vue 或者 react 写好,然后直接挂载在 tauri-app 上么?
    一些文件读写,计算之类的操作我理解不应该是后端 rust 写的吗?
    谢谢指教。
    wnpllrzodiac
        20
    wnpllrzodiac  
       9 天前 via Android
    c++开发想到的是 mfc 和 qt. js 学习成本太大了
    zoharSoul
        21
    zoharSoul  
       9 天前
    qt?
    a1oyss0925
        22
    a1oyss0925  
    OP
       9 天前
    @crackidz 没考虑这点,那 rust 可能难度确实高了,还是在 wails 和 electron 中选吧
    HuberyPang
        23
    HuberyPang  
       9 天前
    https://github.com/pangxiaobin/image-matting python 技术栈 pywebview 和 vue3 实现的
    SHIINASAMA
        24
    SHIINASAMA  
       9 天前
    最近在研究 gpui ,无聊玩玩
    panda1001
        25
    panda1001  
       9 天前 via Android   ❤️ 1
    自用的桌面软件,列一些技术栈
    1.electron
    商业:notion typora obsidian 阿里云盘 vscode qqnt 开源:arduino2 lxmusic motrix
    2. Qt
    商业:tg WPS 向日葵 Snipaste 开源:nekoray
    3.Java/Ktotin
    商业:jb 全家桶 matlab 开源:eclipse arduino1
    4.c#
    商业:有个 tasker ,大厂的少
    开源:v2rayn powertoy screen2gif
    5.win32/MFC
    商业:potplayer bandzip 毒瘤系等
    开源:trafficmonitor notepadplus tortoisegit

    真 to c 还是兼容性最好/无预装的技术栈,也许会觉得土鳖,实际装机量还是最大的。按以上玩玩和工作都联系到,选 electron
    baobao1270
        26
    baobao1270  
       9 天前   ❤️ 1
    flutter 吧,方便跨平台
    liyafe1997
        27
    liyafe1997  
       9 天前 via Android
    怎么没有人提 Flutter
    RichardPlus
        28
    RichardPlus  
       9 天前   ❤️ 1
    投票给 Avalonia ,试试水 :)
    levelworm
        29
    levelworm  
       9 天前
    QT 感觉其实还挺快的。
    shakukansp
        30
    shakukansp  
       9 天前
    为啥 tauri 不用会 rust ?
    那个 web 运行环境能读写文件和跨域请求吗?
    webcape233
        31
    webcape233  
       9 天前 via iPhone
    要和本地文件系统交互等一些工作还得写 rust 的,我是用 wails ,因为我有不少需要操作本地文件系统相关的工作,wails 的话用 go 即可。https://blog.moonguard.dev/why-golang-instead-of-rust-to-develop-the-krater-desktop-app
    rhinoc
        32
    rhinoc  
       9 天前 via Android
    最近在用 tauri 写 macOS 的应用,v2 的文档还是太差了,然后 rust 占比虽然很少但多多少少要会一点(可以通过 ai 或者看报错提示去写)。
    另外如果对 ui 要求比较高也不建议 tauri ,比如要实现原生的磨砂半透明效果或者圆角窗口需要开 private API 直接杜绝上架了。并且设置圆角窗口后,自带的 border 也经常抽风变成直角的。
    ly901206
        33
    ly901206  
       9 天前 via iPhone
    python 的 nicegui 试试?之前用来写游戏挂机脚本还不错
    zhuangzhuang1988
        34
    zhuangzhuang1988  
       9 天前
    不跨平台的化试试
    webview2 + winform ?
    nikenidage1
        35
    nikenidage1  
       9 天前
    我之前用.net 的 avalonia 写了一个小玩具,跨平台,原生编译,无需运行时
    https://v2ex.com/t/952603
    PTLin
        36
    PTLin  
       9 天前
    @rhinoc 说的对,v2 的文档就是狗屎,权限的各种东西都没写清楚。前两天用 tauri v2 配合 vue ,实现多窗口的时候碰到一堆坑,最后发现是权限的 router history 的问题。
    抛开权限那些坑,只写 desktop 的话还算可用。
    PTLin
        37
    PTLin  
       9 天前
    @shakukansp 可以的,tauri 提供了很多 native 功能的 plugin ,安装了对应 plugin 就可以在 js 端使用提供的 api 实现对应的功能,比如文件的 https://tauri.app/plugin/file-system/ 。http 的 https://tauri.app/plugin/http-client/
    xujinkai
        38
    xujinkai  
       9 天前 via Android
    主要还是看后端代码多不多,前端感觉 web 技术栈最简单方便。我的项目是 dotnet 加 webview2 搞的,自己写了一些通信的代码,C#和 typescript 一起写还挺爽 https://onequick.org/
    lscho
        39
    lscho  
       9 天前
    @yoiteshaw
    @shakukansp
    @COW

    按照 js 和 nodejs 的关系,或者 app 开发里的的 JSBridge 来理解就可以了,js 本身不具备原生能力,但是 nodejs 提供了一个 v8 作为 runtime ,JSBridge 提供了 SDK 来映射原生接口。

    tauri 也一样,原生能力是 tauri 框架里 rust 提供的,但是开发者只需要写 js 调用就可以了。
    asm
        40
    asm  
       9 天前
    没人或者没工作逼你的话,远离 electron 。
    xiaoqidev
        41
    xiaoqidev  
       9 天前   ❤️ 1
    @yoiteshaw #19 任何一个前端项目都可以直接加上 Tauri ,官方提供了丰富的插件和接口,通过 js 即可调用。也不是完全不需要 rust ,只是不写 rust 也能开发,常见的需求官方都提供了,官方没有的还是需要写 rust ,rust 有丰富的库,能想到的基本都有现成的 crates 可以用,我靠 AI 也写了大几千行 rust ,大部分我都看不懂,但不影响它运行,当然有一些性能问题、个别情况异常闪退啥的我也处理不了
    sir283
        42
    sir283  
       9 天前   ❤️ 1
    写桌面应用,Windows 平台只推 C#,跨平台只推 Qt 。
    xgdgsc
        43
    xgdgsc  
       9 天前 via Android
    https://zhuanlan.zhihu.com/p/654288010?utm_psn=1838903415104757760 rust 难得话可以考虑学简单的 Julia 做 electron 后端,虽然现在打包文件很大,未来会变小的 https://github.com/terasakisatoshi/libcalcpi_juliac 。现在还有一个第三方的闭源编译器可以交叉编译类型稳定的 Julia 子集到 Cpp https://github.com/thautwarm/julia-android-example .
    iorilu
        44
    iorilu  
       9 天前
    @sir283 qt 本来底子是好的

    但官方这么多年也没搞点好的 ui 方面得支持, 我指的是现成得比较现代化得 ui 库

    虽然官方有什么 qss, qml 等, 但普通开发者也没能力在这方面做的好

    无所谓 ui 是否现代化, qt 确实是最好得跨平台选择
    dadaji
        45
    dadaji  
       8 天前 via iPhone
    FightPig
        46
    FightPig  
       8 天前
    如果 你开发的东西给开发者用,可以选 tauri,如果给普通用户用,直接放弃,有人还在用 win7,你能想像到他怎么安装 tauri 的依赖么?
    fyxtc
        47
    fyxtc  
       8 天前
    我给一个思路:你把你备选的几个 demo 都手敲一遍,改一改,哪个最舒服就用哪个,都说是玩玩了还考虑那么多没必要,来这里问也是百家争鸣。
    bluearc
        48
    bluearc  
       8 天前
    投 flutter 一票,但考虑工作的话还是 electron 或者 qt
    lqw3030
        49
    lqw3030  
       8 天前
    https://github.com/tw93/Pake
    这个项目可能可以满足你的需求
    Serino
        50
    Serino  
       8 天前
    试试那个超级胶水的 aardio ?
    BYDH
        51
    BYDH  
       8 天前
    我梦到过若干年后的某天用游戏引擎写软件界面,可能是 godot ,醒来评估了一下,还是有点重,选的 raylib
    sujin190
        52
    sujin190  
       8 天前 via Android
    @RichardPlus 公司的商业项目用 Avalonia 重做完了,性能和兼容性都还可以。win7 上也能正常运行,挺好的
    sujin190
        53
    sujin190  
       8 天前 via Android
    @profchaos 确实界面 xml 的热重载几个 ide 支持都有问题,不过.net 的热重载倒是微软搞的,不过 xaml 文件 avalonia 中还是被编译为 c#代码了不是运行时加载的,不知道微软 c#的热重载咋搞的,否则还真不好弄
    jlkm2010
        54
    jlkm2010  
       8 天前
    1. electron
    2. qt
    3. Java/Ktotin

    这三个中选一个,都有海量成熟案例
    RichardPlus
        55
    RichardPlus  
       8 天前
    @sujin190 666 ,目前还没啥跨平台的需求,不然确实可以从 WPF 跳出来了
    roundgis
        56
    roundgis  
       8 天前 via Android
    @jlkm2010 kotlin 用哪些技术? kmm?
    jlkm2010
        57
    jlkm2010  
       8 天前
    @roundgis kotlin 也用 javafx 或者 swing
    huage
        58
    huage  
       8 天前
    选来选去,我也是选择了 electron ,可能我技术底子差
    johnnyyeen
        59
    johnnyyeen  
       8 天前
    不考虑包大小的话,electron 是相对最成熟的。
    sunmker
        60
    sunmker  
       8 天前
    不跨平台,C# WPF
    hover
        61
    hover  
       8 天前 via Android
    最近写了几个项目,用的 Avalonia 和 WinUI3 。
    zhangeric
        62
    zhangeric  
       8 天前
    不跨平台,对性能有要求,建议微软全家桶.
    跨平台,对性能有要求就 qt,没要求 electron
    zhuzixian
        63
    zhuzixian  
       8 天前
    不跨平台:WPF
    跨平台:Avalonia
    kxg3030
        64
    kxg3030  
       8 天前
    winform pyqt qr arrdio 选一个 js 的方案不要考虑
    liaohongxing
        65
    liaohongxing  
       8 天前
    Tauri 做商业应用坑定是不行的,最大问题就是跨平台的浏览器内核版本不一致 ,比如用到了一些最新的 css, js 特性,另外这东西一旦没法运行 ,连反馈渠道都没有(因为没运行起来),商业产品大忌。
    KeysPAN
        66
    KeysPAN  
       8 天前
    @xiaoqidev 可以推荐一下学习网站吗,我是嵌入式的,又不想用 QT 写,想顺便接触一下前端。Tauri 官网的好像没什么教程
    INCerry
        67
    INCerry  
       8 天前
    桌面开发还是得相信老牌,从语法舒适度、性能、支持等各个来说,不跨平台选 WPF ,跨平台 Avalonia
    Yanlongli
        68
    Yanlongli  
       8 天前
    简单的跨平台:electron ( JS )、tauri ( JS )
    复杂的跨平台:flutter ( Dart )、Slint ( Rust )、QT ( C++)
    leegoo
        69
    leegoo  
       8 天前
    桌面端只用过 flutter ,投 flutter 一票...
    ca2oh4
        70
    ca2oh4  
       8 天前
    qt 跨平台同版本,在不通发行版 gui 表现都不一致
    nilaoda
        71
    nilaoda  
       8 天前
    tauri 要考虑不同系统的兼容性
    xiaoqidev
        72
    xiaoqidev  
       8 天前
    @KeysPAN #66 没看到有系列教程,基本只看了官方文档,前端没遇到过问题,坑都在 rust 上,Google + AI 也都找到了答案,我也尝试过写系列教程分享我从 0 学习到上架的整个过程,每次分享都有大量的批评和反对,但沟通中发现他们连项目都没跑起来过,教程试了几次关注量都在个位数已搁置,也没见过有像我这样大量用于商业项目的
    lmq2582609
        73
    lmq2582609  
       8 天前
    tauri 确实提供了很多插件,可以直接编写 js 或 ts 代码而不需要编写 rust 代码,但这些插件 bug 可不少,当你发现 js 或 ts 有 bug 然后在 github 提了 issues 也没人解决的时候,就得换成用 rust 去解决了,所以还是需要掌握一些 rust 基础语法的,也不用掌握太高深
    KeysPAN
        74
    KeysPAN  
       8 天前
    @xiaoqidev 主要是不懂前后端的联动是怎么实现的,就 helloworld 那个就够我喝一壶了。没这个意识。我是想写些小工具用的,用 Qt ,感觉成本更高,美化 UI 就把我干掉了。商用的应该不多,毕竟才两年的框架。不着急的
    pipixiarwksb
        75
    pipixiarwksb  
       8 天前
    最好别用 py 类工具的去写,打包都搞死人 ,顺便问下 有没有打包方便的不容易被反编译的工具写桌面应用
    CHTuring
        76
    CHTuring  
       8 天前
    说写 tauri 不用会 rust 的,那你的应用就是包个壳,那和你用 Pake 直接打包网页有什么区别?
    capgrey
        77
    capgrey  
       8 天前
    投一票 Flutter ,因为我真爱谷歌
    xiaoqidev
        78
    xiaoqidev  
       8 天前
    @KeysPAN #74 前后端通信由框架实现,直接用
    HaroldFinchNYC
        79
    HaroldFinchNYC  
       8 天前
    @sujin190 #52 macos 和 linux 呢
    qiniu2025
        80
    qiniu2025  
       7 天前
    有 cursor ,你只需要选择编译部署最得心应手的,语言不重要
    iorilu
        81
    iorilu  
       7 天前
    @pipixiarwksb tauri 阿, 你核心逻辑用 rust 写肯定不容易被反编译
    sujin190
        82
    sujin190  
       7 天前 via Android
    @HaroldFinchNYC 都运行良好,性能很不错,而且一致性非常好,可以说完全一致,我们完成了 macos 的 arm64 ,uos 的龙芯芯片,银河麒麟的海思 x86 芯片的测试,完全不比 win 差,并且.net8 现在打包时可以选择报告运行时,所以安装完直接可以用,并不需要先安装.net 运行时
    byasm32
        83
    byasm32  
       7 天前
    c++纯手搓 要啥框架
    mandex
        84
    mandex  
       7 天前
    electron 吧,我用了好几年 electron 了,虽然这玩意一坨屎,但是其他几个更不行
    gumusu
        85
    gumusu  
       7 天前 via Android   ❤️ 1
    有没有用 kotlin compose multiplatform 的聊聊😂
    YiXinCoding
        86
    YiXinCoding  
       7 天前
    Electron 和 Tauri 都用过。Tauri 真香,打包就 2M ,但 Rust 写的头大。独立开发完全没问题:/t/1068568
    YiXinCoding
        87
    YiXinCoding  
       7 天前
    Tauri 做的,借地方打个广告,重新贴一下链接:
    https://www.v2ex.com/t/1068568
    https://kite.kitlib.cn/

    [img][/img]

    另外小黄鱼接单 Tauri 答疑

    [img][/img]
    Lemon2ee
        88
    Lemon2ee  
       7 天前
    @shakukansp 还真行,有 fs plugin: https://v2.tauri.app/plugin/file-system/#usage

    tauri 有一些 plugin 还是只有 rust ,但是做一个很基础的桌面 app 只会 js 好像也行。
    spkingr
        89
    spkingr  
       7 天前 via Android
    @gumusu 我也推荐这个 KMM ,跨平台,性能优,语法也丝滑,类似 react 写法。
    electron 也可以,就是得会优化吧,东西很大。
    qt 还是难。
    HaroldFinchNYC
        90
    HaroldFinchNYC  
       7 天前
    @sujin190 #82 那真不错啊
    我有点想学这个,但不是很确定
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5790 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 03:33 · PVG 11:33 · LAX 19:33 · JFK 22:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.