2020 年写跨平台桌面客户端用什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问时复制粘贴 AI 生成的内容
ericgui
V2EX    程序员

2020 年写跨平台桌面客户端用什么?

  •  
  •   ericgui 2020-09-02 09:16:12 +08:00 10323 次点击
    这是一个创建于 1914 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我最近考虑写一个跨平台的桌面客户端,不是游戏,就是办公类的产品。

    第一个出现在脑海中的选择似乎是 electron
    然后搜到有 react native for windows/macOS

    当然,也有 Qt,但我显然不懂 C++或者 Python

    C#写 WPF, 当然非常 OK,但不跨平台,而且我还要重新学 C# ?

    所以,各位有什么看法么
    第 1 条附言    2020-09-02 10:48:53 +08:00
    好,那就 electron 吧

    谢谢各位
    42 条回复    2020-09-28 10:42:59 +08:00
    caopi
        1
    caopi  
       2020-09-02 09:17:59 +08:00
    electron 。。。飞书,twitch 都是 electron,还有马斯克的火箭控制台。。。。
    ragnaroks
        2
    ragnaroks  
       2020-09-02 09:22:25 +08:00
    如果终端不在意体积和性能,electron 最合适,否则 QT
    h82258652
        3
    h82258652  
       2020-09-02 09:26:30 +08:00
    electron 吧。avalonia 中文输入法据说有问题。flutter 还没 stable 。
    murmur
        4
    murmur  
       2020-09-02 09:27:58 +08:00   1
    办公直接 web 就可以,能说一下做 app 的意义么

    web 其实挺好的,不需要考虑发布的问题,做 app 你就逃不掉更新这些
    icenine
        5
    icenine  
       2020-09-02 09:29:27 +08:00
    VSCode 也是 electron 的,这还不能打消你的顾虑吗
    BingoXuan
        6
    BingoXuan  
       2020-09-02 09:29:45 +08:00 via Android
    我用 Webview 包了一个 app,可惜快捷键用不了,但体积小。实时图表更新比 chrome 还要丝滑,这一点非常不解。
    haleyao
        7
    haleyao  
       2020-09-02 09:35:28 +08:00
    flutter 我觉得可用了呀
    用它写了个地图编辑器 还没遇到坑
    96412hj
        8
    96412hj  
       2020-09-02 09:36:52 +08:00
    @BingoXuan #6 老哥,能给个链接吗?学习学习,最近正好工作有需要,之前用的 electron,这玩意太不稳定了,老是更新,现在我做的项目要和模组打交道,想着还是用原生包个 webview
    nnnToTnnn
        9
    nnnToTnnn  
       2020-09-02 09:38:01 +08:00
    @BingoXuan 6L 老哥,你试试换个操作系统试试。
    knightgao2
        10
    knightgao2  
       2020-09-02 09:39:51 +08:00   3
    electron 航天级别实战框架
    Guidoo
        11
    Guidoo  
       2020-09-02 09:44:37 +08:00
    electron 不解释
    zjsxwc
        12
    zjsxwc  
       2020-09-02 09:47:29 +08:00
    考虑下 imgui,和 PHP 裸写网页一样写 GUI,挺简单的

    https://github.com/ocornut/imgui

    https://github.com/inkyblackness/imgui-go
    C603H6r18Q1mSP9N
        13
    C603H6r18Q1mSP9N  
       2020-09-02 09:52:34 +08:00
    @haleyao #7 flutter. 桌面端都支持了?

    实际上很多桌面端就是 webview 包个壳,动不动就 100M,看见就头大
    zzk1989
        14
    zzk1989  
       2020-09-02 10:03:38 +08:00
    使用浏览器作为界面吧,只带一个托盘,用 websocket 通讯,打开界面用默认浏览器或者使用 chrome 命令行 app 模式
    clf
        15
    clf  
       2020-09-02 10:16:30 +08:00
    electron
    flutter
    Chenamy2017
        16
    Chenamy2017  
       2020-09-02 10:23:58 +08:00
    electron + vue.js 走起。QT 年轻的时候做过几年,现在入坑 electron 。
    cheng8984
        17
    cheng8984  
       2020-09-02 10:28:28 +08:00
    去年用 PyQt 写了一套,感觉还可以,QtDesigner 用起来舒服啊
    jjianwen68
        18
    jjianwen68  
       2020-09-02 10:29:58 +08:00
    supermoonie
        19
    supermoonie  
       2020-09-02 10:32:43 +08:00 via iPhone
    考虑性能的话 qt 还不错,不考虑性能,javafx 也不错,另外也可以考虑 jcef 做个外壳加载本地页面,最近在用 javafx 做跨平台的开发,只可惜 jcef 不支持 javafx,论坛里 15 年开始提议,到现在也没能支持,不过可以曲线救国使用子进程打开 jcef 或者花钱买 JxBrowser
    em70
        20
    em70  
       2020-09-02 10:37:50 +08:00
    delphi 一个工程同时编译成 win 和 mac 两个版本,几乎无需额外代码
    BingoXuan
        21
    BingoXuan  
       2020-09-02 10:41:04 +08:00
    @96412hj
    go 有个库就叫 webview,你搜一下就知道了。但我觉得这个做小工具还行,大项目还是不要了,api 极其简陋。因为不同操作系统下对 webview 有各种限制。在 macOS 下连复制粘贴都不行,alert 更是不行。更没有 electron 那样不同进程相互调用,我自己手写 websocket 的 rpc 。v 友写过一个 deskgap,但已经停止开发了。我也考虑给 deskgap+1s,无奈不会 Windows 下的编程。

    @zjsxwc
    imgui 在高分辨率下很容易糊,非常蛋疼。不过真的非常小。

    @shanghai1998
    100m 肯定是 electron,不是 webview 套壳,而是把整个浏览器扔进去了。
    ruyuejun
        22
    ruyuejun  
       2020-09-02 10:43:15 +08:00
    毫无疑问现在是 Electron
    lux182
        23
    lux182  
       2020-09-02 10:53:22 +08:00
    electron 感觉让人又爱又恨
    Jirajine
        24
    Jirajine  
       2020-09-02 11:05:48 +08:00 via Android
    tauri
    Ritr
        25
    Ritr  
       2020-09-02 11:57:19 +08:00
    如果不是必须的话 web 版的其实就足够了,electron 也无非就是套壳开发
    icyalala
        26
    icyalala  
       2020-09-02 11:59:49 +08:00
    如果是 Java 技术栈的,尤其是做 Android 的,JavaFX 几乎没有学习曲线,
    而且不至于过几个月连 build 都失败(狗头)。
    wh1012023498
        27
    wh1012023498  
       2020-09-02 13:57:43 +08:00
    qt,electon,nw.js
    hwdef
        28
    hwdef  
       2020-09-02 14:06:48 +08:00
    electron 性能想优化的好太难了,,,只有 vscode 算是性能好的,,其他 electron 写出来的都太差了。。。

    c#现在也可以跨平台,,xamarin

    或许跨平台就是个错误的选择呢?厂商的意义就是创造壁垒,,为难跨平台的应用。
    tairan2006
        29
    tairan2006  
       2020-09-02 14:11:16 +08:00
    跨平台是个坑…目前最大的指望是 flutter,但是现在还不能用
    gongym
        30
    gongym  
       2020-09-02 14:14:04 +08:00 via Android
    govcl,跨平台,轻量级,拖拽 UI 布局,案例丰富,golang 开发。简直完美
    luosong
        31
    luosong  
       2020-09-02 14:29:39 +08:00
    以前用 QT,写过 js 之后再也不想碰 C++
    element90
        32
    element90  
       2020-09-02 16:20:16 +08:00
    难道不是 flutter 吗?
    我是 Java 后端开发,但最近辞职没找到工作,所以在家学习了 Flutter,真心推荐下,真的挺好用,flutter 的语言使用 Dart,Dart 有点像混合了 js 和 java,不像 scala 那样复杂,很好上手。
    而且我本人也没有太多的移动端开发经验,做过全栈(web),可以轻松地构建自己的应用,虽然目前只是 android 和 iOS,但 flutter 支持到桌面级的开发,非常方便移植。
    另外毛遂自荐一下自己的应用,已经开源,github 地址:https://github.com/forfuns/sudoku-flutter
    希望可以帮到你
    qq7790586
        33
    qq7790586  
       2020-09-02 18:07:08 +08:00
    electon 真的是又爱又恨。vscode,迅雷。钉钉貌似也是 electon
    HaiYu
        34
    HaiYu  
       2020-09-02 18:13:45 +08:00
    可以关注一下 tauri 对标的是 electon,虽然功能还不全但感觉有前途
    creanme
        35
    creanme  
       2020-09-02 22:48:26 +08:00
    react-native (手动狗头
    不过 react-native 确实可以开发 windows 和 macos 的程序,轮子哥似乎在做这方面的工作。
    zhanlanhuizhang
        36
    zhanlanhuizhang  
       2020-09-03 09:38:27 +08:00
    .NET Core,应该是跨平台的吧
    PopRain
        37
    PopRain  
       2020-09-03 11:00:57 +08:00
    .net Winform 和 wpf 应该很快可以跨平台了, 强烈不建议 QT , 就算在 windows 下运行,也不是调用 windows 的 API, 是自己做的一套窗口系统,不喜欢。(当然也可能我对 QT 了解不多,没有 c++功底的人就不要考虑 QT 了)
    myCupOfTea
        38
    myCupOfTea  
       2020-09-03 12:16:16 +08:00
    @qq7790586 钉钉是 nw.js
    myCupOfTea
        39
    myCupOfTea  
       2020-09-03 12:16:37 +08:00
    不兼容 xp electron,兼容 xp nw.js
    ArrayBuffer
        40
    ArrayBuffer  
       2020-09-03 16:21:08 +08:00
    如果有时间折腾可以试试 flutter, 想快速开发还是用更成熟的 electron, 就这么简单
    loginbygoogle
        41
    loginbygoogle  
       2020-09-28 10:39:45 +08:00 via iPhone
    现在是 electron,2-3 年后是 flutter
    loginbygoogle
        42
    loginbygoogle  
       2020-09-28 10:42:59 +08:00 via iPhone
    等 flutter desktop 完成了对 webview2 的集成,electron 就可以退休了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2748 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 03:54 PVG 11:54 LAX 19:54 JFK 22:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86