V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ericgui
V2EX  ›  程序员

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

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

    第一个出现在脑海中的选择似乎是 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   ·   实用小工具   ·   913 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 22:30 · PVG 06:30 · LAX 14:30 · JFK 17:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.