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

现在有没有好的跨平台的 UI 库

  •  1
     
  •   csulyb · Mar 3, 2021 · 14799 views
    This topic created in 2080 days ago, the information mentioned may be changed or developed.

    想做一款类似百度网盘(主要 UI 很类似)的软件,之前一直 mfc+soui 在 windows 开发,由于需要到多平台运行,考虑 4 种方案来开发: 1.net+wpf 2.java 3.qt 4.electron 或者 nw (发布的包有点大,基本排除)

    大家有没有好的推荐,选择哪个好点?

    85 replies  •  2021-03-05 11:22:50 +08:00
    ysc3839
    ysc3839
    Mar 3, 2021 via Android
    1
    你的方案里 1 是不能跨平台的,2 已经不太流行了,只剩下 3 4 可选,你又觉得 4 太大,那只有 3 了。
    fixend
    fixend
    Mar 3, 2021
    2
    我的话,只考虑 Flutter 或 electron
    PUBG98k
    PUBG98k
    Mar 3, 2021
    3
    csulyb
    csulyb
    OP
    Mar 3, 2021
    4
    @ysc3839 qt 好像现在使用的人不多,怕采坑
    @fixend Flutter 坑多吗, 有没案例
    csulyb
    csulyb
    OP
    Mar 3, 2021
    5
    @PUBG98k 多谢,我了解了下,好像国内没有商业产品用这个
    Shazoo
    Shazoo
    Mar 3, 2021❤️2
    6
    2 年前,也纠结 QT 还是 Electron 。最后选了 Electron……

    好吧,这个项目到现在都还没结束……您细品。
    HeapOverflow
    HeapOverflow
    Mar 3, 2021
    7
    discord 和 slack 桌面版都用的 electron,用户体验都很很不错。
    fixend
    fixend
    Mar 3, 2021❤️2
    8
    @csulyb electron 相对成熟,坑也不少的,但 electron 的成功案例挺多,这个我用得最多。
    flutter 桌面开发,我只做过一些小项目,没遇到什么大坑,flutter app 有成功案例,桌面开发没听说。

    @Shazoo 用 QT 的话,项目是不是早结束了?开发不下去,被砍掉。。。
    ysc3839
    ysc3839
    Mar 3, 2021 via Android
    9
    @csulyb 市场份额的话我没调查过,不太清楚。
    xing7673
    xing7673
    Mar 3, 2021 via iPhone
    10
    目前观察到的直接选择 electron 吧,不选 flutter 主要是成熟应用把 flutter 当做插件用,纯 flutter 的还需要成功案例。
    Jirajine
    Jirajine
    Mar 3, 2021
    11
    试试这个? https://tauri.studio/
    距离 stable 也不算远了。
    imkerberos
    imkerberos
    Mar 3, 2021❤️3
    12
    Qt 有 20 多年的历史, N 多国外大型项目在用, 什么 AutoCAD, Maya 之类的. 你觉得呢?
    xcstream
    xcstream
    Mar 3, 2021
    13
    现在趋势就是网页套壳
    MeteorCat
    MeteorCat
    Mar 3, 2021 via Android
    14
    electron + nw,招人好招
    3dwelcome
    3dwelcome
    Mar 3, 2021
    15
    看是不是项目完全自己开发,我个人倾向于游戏开发全平台那种 UI 。
    WEBVIEW UI 团队开发可以,一个人开发,JS 上也没什么太大的积累,个人感觉写起来没有 C++舒心。( JS 大佬除外,V2 应该有不少)
    GM
    GM
    Mar 3, 2021
    16
    uno 可以考虑一下
    northisland
    northisland
    Mar 3, 2021
    17
    qt
    northisland
    northisland
    Mar 3, 2021
    18
    pyqt (qt) -> git-cola
    PyGObject (gtk) -> gnome meld

    很棒的开源软件,ubuntu apt 直接安装
    yitingbai
    yitingbai
    Mar 3, 2021
    19
    这 4 个中, Qt 内存占用最低, 比其他 3 个小好几倍, 安装包体积最小,性能高, 但是上手难. 我推荐 javafx 开发桌面端, 不过百度网盘这种, 不需要和系统 api 交互, 类 web 端就好了, electron 应该最适合你的需求
    imn1
    imn1
    Mar 3, 2021
    20
    Qt 只是没有中文手册,国内相对少,国外用的人很多,文章、例子也多
    westoy
    westoy
    Mar 3, 2021
    21
    @imkerberos
    @xcstream

    其实中古时代就流行网页套壳了


    出 ActivePerl 和 ActivePython 的 ActiveState 家的 komodo edit/IDE 就是基于 mozilla 的 xulrunner 的, 比 atom 、vscode 早了七八年

    也有不少人就是直接套个 qtwebview 直接上的
    kylix
    kylix
    Mar 3, 2021
    22
    lazarus

    ^o^
    loginbygoogle
    loginbygoogle
    Mar 3, 2021
    23
    如果是商业应用,electron 分分钟给你破解,有 win32 或 Swift 基础,可以直接 Flutter
    J55s5
    J55s5
    Mar 3, 2021
    24
    Qt,用 QML 开发分分钟的事
    ericls
    ericls
    Mar 3, 2021 via iPhone
    25
    unity
    html
    LarryWang
    LarryWang
    Mar 3, 2021
    26
    无远+ electron
    hnbcinfo
    hnbcinfo
    Mar 3, 2021
    27
    xaml+C#

    前几天试过,用 Xamarin 写一套界面,可以轻松打包成 pc 和 Android 、iOS 的程序,不过在写界面的时候稍微麻烦,毕竟要兼容多平台。和传统的 wpf 有些区别。

    https://docs.microsoft.com/zh-cn/xamarin/
    weimo383
    weimo383
    Mar 4, 2021 via Android
    28
    @loginbygoogle 怎么破解?它就一个 exe
    levelworm
    levelworm
    Mar 4, 2021 via Android
    29
    习惯 MFC 的话估计是 C++?那上手 QT 应该不难。甚至可以先用 PyQT 做个原型出来看看。
    noqwerty
    noqwerty
    Mar 4, 2021 via Android❤️1
    30
    看完这个帖没多久就刷到了 Flutter 2 的消息,放在这供大家参考吧: https://developers.googleblog.com/2021/03/announcing-flutter-2.html
    KaoN
    KaoN
    Mar 4, 2021 via Android
    31
    qt 问题不大,虽然最近社区和 qtc 意见分歧很大,qt5 还是可以用的
    NewTab12138
    NewTab12138
    Mar 4, 2021 via iPhone
    32
    桌面端用 electron,移动端用 flutter, 这是最佳答案
    murmur
    murmur
    Mar 4, 2021
    33
    flutter 是给 native 程序员用的,不是给前端用的,而且这东西的 web 和 windows 版看看就行了
    几千个 issue 叫最佳解决?真敢吹啊
    dingwen07
    dingwen07
    Mar 4, 2021 via iPhone
    34
    Qt
    supermoonie
    supermoonie
    Mar 4, 2021 via iPhone
    35
    最近在使用 jcef 开发跨平台的桌面应用,有兴趣的话,可以发你链接
    yolee599
    yolee599
    Mar 4, 2021 via Android
    36
    WPS 就是 Qt 做的,挺不错的,但是 Qt5 之后走商业路线了
    yingzir
    yingzir
    Mar 4, 2021❤️1
    37
    没有人提 uno 吗? https://platform.uno c# 开发,比较成熟了
    AndyAO
    AndyAO
    Mar 4, 2021❤️1
    38
    .NET(MAUI) 和 Java(skija) 的新方案需要等,所以指望不上了。

    目前 JVM 上有 JavaFX,C#上有 Xamarin 可以用。

    当然,如果不嫌老,Swing 也行。
    diyisoft
    diyisoft
    Mar 4, 2021
    39
    弱弱的推荐一下 Delphi 最新版本 :)
    AndyAO
    AndyAO
    Mar 4, 2021
    40
    楼上说的 uno 刚刚听说,Windows 用 UWP,而跨平台用 Xamarin 和 WebAssembly 。

    The Story About .NET Cross Platform UI Frameworks – The Half-Blood Programmer – Stories from Lex Li on technologies.

    https://blog.lextudio.com/the-story-about-net-cross-platform-ui-frameworks-dd4a9433d0ea?gi=ed6c9cc36c51
    sarlanori
    sarlanori
    Mar 4, 2021 via Android
    41
    qt 除了开发效率低一点,其他挺好的,大型项目还是推荐用 qt,项目不大的话都可以吧
    bthulu
    bthulu
    Mar 4, 2021
    42
    unity 没人用么, 这个也能跨平台的, 招人也容易
    murmur
    murmur
    Mar 4, 2021
    43
    @bthulu unity 没见过开发 app 的啊,都是做游戏
    missdeer
    missdeer
    Mar 4, 2021
    44
    Qt 在 C++ GUI 框架中开发效率绝对算高的
    XIVN1987
    XIVN1987
    Mar 4, 2021
    45
    qt 跨平台、性能好、功能丰富,,久经考验,值得信赖

    不过 C++学习、使用难度较大,,建议试试 PyQt 、PySide
    zuosiruan
    zuosiruan
    Mar 4, 2021
    46
    @bthulu 哈哈 这。。。。
    janxin
    janxin
    Mar 4, 2021
    47
    取决于你的开发能力啊,你的开发了解或者熟悉 Qt 那就上 Qt,没必要再去踩 Electron 的坑

    如果都不熟,要看你对功能需求,很多程序对本地功能需求不大的前提下,Electron 是一个很好的选择。

    看你的需求,百度网盘这种就算,界面与功能交互不复杂,下载进程其实就走独立的本地进程即可。
    smilenceX
    smilenceX
    Mar 4, 2021
    48
    看你熟悉的技术栈吧。
    我个人是不太喜欢 Electron 开发出来的程序,可能是因为我电脑配置不好,跑起来总觉得有点重。
    .net+wpf 不行,但是.net 有一些跨平台的库,比如前面有人提到的 uno 。 今年年底的.net 6 也会自带 maui 。
    我对 java 做 UI 了解不多,不评论了
    sssooonnnggg
    sssooonnnggg
    Mar 4, 2021
    49
    考虑下 imgui ?
    nicevar
    nicevar
    Mar 4, 2021
    50
    看你是做项目玩还是用了,如果是用肯定选择成熟的框架,那 Qt 就是最好的选择,毕竟 Qt 开发的软件几乎每个人的电脑上都有,游戏平台一堆都是 Qt 开发的,还有各类行业软件,反正我随便搜了一下电脑里有几十个,我的电脑里四个游戏平台,还有 AMD 的驱动管理、金士顿 SSD 管理软件、企业微信、AutoCAD 、抓包的 wireshark 、音乐的 MusicCore 和 GuitarPro 、IDE 的 HBuilderX,太多了。
    chinvo
    chinvo
    Mar 4, 2021
    51
    .Net 需要配合 Avalonia UI 才能跨平台

    用 Xamarin 的话勉强算跨平台(共用核心库, 各平台分别建 UI 工程)

    C++ 和 QT 用起来也不错

    后排提示, 跨平台扯着蛋
    Torpedo
    Torpedo
    Mar 4, 2021
    52
    这么多推荐 flutter 的,想问下桌面端 flutter 有什么案例吗?
    paoqi2048
    paoqi2048
    Mar 4, 2021
    53
    看你之前用的 MFC,那就 Qt 吧
    newmlp
    newmlp
    Mar 4, 2021
    54
    Qt,久经考验
    crazytree
    crazytree
    Mar 4, 2021
    55
    需要设计可以联系我:P
    TomVista
    TomVista
    Mar 4, 2021
    56
    出产品当然 qt,electron,别的都是玩具
    shunia
    shunia
    Mar 4, 2021
    57
    @noqwerty #30 应该是最新的稳定版发布后就计划好的,我感觉说是 2,其实主要就是网页平台基本 production-ready 了
    shunia
    shunia
    Mar 4, 2021
    58
    @bthulu #42 Unity 因为是渲染引擎所以做 App 是挺耗性能的,很少有人选择。
    @murmur 游戏工具有用 Unity 做桌面端的,比如: https://www.fairygui.com/ 这个 UI 工具就是用 Unity 开发的跨操作系统的桌面端。
    loginbygoogle
    loginbygoogle
    Mar 4, 2021 via iPhone
    59
    @weimo383 反编译太容易,被动开源不可取
    charlie21
    charlie21
    Mar 4, 2021
    60
    kongziming
    kongziming
    Mar 4, 2021
    61
    Qt,使用过 MFC 的话,用起 Qt 简单易上手
    darknoll
    darknoll
    Mar 4, 2021
    62
    @TomVista 没玩过 CEF ?
    buzailianxi
    buzailianxi
    Mar 4, 2021
    63
    qt
    g00001
    g00001
    Mar 4, 2021
    64
    其实前端网页能共用就行了,没有必要底层一定要跨平台,这样避免不必要的给自己挖坑。
    ELectron 其实不如微软 Edge 的 WebView ( Chromium 内核) 轻量简洁。

    aardio 里调用 WebView 的例子,生成的 EXE 文件打包就几百 KB

    import win.ui;
    var winform = win.form(text="Edge 浏览器控件 - web.view";right=759;bottom=469;bgcolor=16777215)

    import web.view;
    var wb = web.view(winform);

    wb.export({
    alert = function(msg){
    winform.msgbox(msg);
    return 123;
    }
    nativeLog = function(msg){
    winform.msgbox(msg);
    }
    })

    wb.html = /**
    <script type="text/javascript">
    alert("test").then( v=>nativeLog(v))
    </script>
    **/

    winform.show();
    win.loopMessage();
    littlewing
    littlewing
    Mar 4, 2021 via iPhone
    65
    electron 感觉很耗资源,不流畅
    BernieDu
    BernieDu
    Mar 4, 2021
    66
    跨平台 UI 库还没黄啊。。android 和 iOS 本身就不应该共用一套设计,so stupid,外加原生开发体验很爽性能很高。没错,我是原生派
    QBugHunter
    QBugHunter
    Mar 4, 2021❤️1
    67
    Qt 最优选,但如果选择 Qt 的话招人是个问题,搞 C++的工资要求都不低(不算我)
    Electron,不适合高性能产品,如果没有对性能上的追求,Electron 也是个好的选择
    fgodt
    fgodt
    Mar 4, 2021
    68
    qt,electron 其他都不靠谱
    TomVista
    TomVista
    Mar 4, 2021
    69
    @darknoll 没有
    lonewolfakela
    lonewolfakela
    Mar 4, 2021
    70
    其实弄个 wine 也不是不可以……
    SenLief
    SenLief
    Mar 4, 2021
    71
    qt 在跨平台上更友好,如果不在乎包大小,那无疑 electron 更方便。
    piaochen0
    piaochen0
    Mar 4, 2021
    72
    @murmur 我们之前用 unity 做过 app,就是考虑跨平台,各种坑,包也特别大,很多东西也没解决方案。慎用...
    ACodelover
    ACodelover
    Mar 4, 2021
    73
    GTK,最近刚发布了 GTK4
    Lemeng
    Lemeng
    Mar 4, 2021
    74
    QT,容易,好上手
    Otho
    Otho
    Mar 4, 2021
    75
    推荐 Qt ,qt5 完整的做过一个跨平台的网盘项目,系统差异大的需要自己处理一下,github 上多找找也有不少开源库。就是资料少一点儿,需要自己慢慢找。
    nutting
    nutting
    Mar 4, 2021
    76
    知乎上的轮子哥搞了一个 ui 组件,你问问
    AmiKara
    AmiKara
    Mar 4, 2021
    77
    不管选什么最后开发还是与开发能力有关,electron 确实有很多坑,但也有类似于 vsc 这种非常优秀的产品,还是得看个人的技术栈或学习能力。
    csulyb
    csulyb
    OP
    Mar 4, 2021
    78
    @Otho #75 能说啥有哪些坑吗
    nerocc
    nerocc
    Mar 4, 2021 via Android
    79
    真的需要发布包小的话,不要等框架,自己找一个类似于 WebWindow 这种的做前端,然后后端用一个自己懂得的高效率语言写一个,然后自己想办法打包起来。

    SteveSandersonMS/WebWindow
    yunyuyuan
    yunyuyuan
    Mar 4, 2021
    80
    PyQt,写起来挺快,运行也不错
    wangxiaoaer
    wangxiaoaer
    Mar 4, 2021
    81
    @Torpedo #52 同问,先找个 demo 运行下看看都找不到
    thtznet
    thtznet
    Mar 4, 2021
    82
    MAUI,马上出正式版了
    ragnaroks
    ragnaroks
    Mar 5, 2021
    83
    现在稳定的只有 QT,或许可以等 MAUI,其它的都是自娱自乐
    Otho
    Otho
    Mar 5, 2021
    84
    @csulyb Qt 的坑说起来挺多,但是我在开发过程中基本遇到的都能有可以使用原生的解决办法。与 js 交互有点麻烦,WebEngine 需要 js 单独支持,文件系统有差异需要使用原生方法解决,网络库不是很好用,建议使用开源的库,比如 Google 的。再有就是打包方面的问题了: Windows 的资料比较多,Mac 和 Linux 的较少,Linux 的看你需求使用官方的也能行,我用的一个开源解决方案 https://github.com/probonopd/linuxdeployqt 。Mac 的可以看一下论坛里的帖子 ,我的博客中也有一些总结,比较简单,可以参考一下 https://blog.msmk.live/
    csulyb
    csulyb
    OP
    Mar 5, 2021
    85
    @Otho #84 多谢分享
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1942 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 140ms · UTC 15:41 · PVG 23:41 · LAX 07:41 · JFK 10:41
    ♥ Do have faith in what you're doing.