现在有没有好的跨平台的 UI 库 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
csulyb
V2EX    程序员

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

  •  1
     
  •   csulyb 2021-03-03 15:52:02 +08:00 13623 次点击
    这是一个创建于 1731 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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


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

    也有不少人就是直接套个 qtwebview 直接上的
    kylix
        22
    kylix  
       2021-03-03 22:22:22 +08:00
    lazarus

    ^o^
    loginbygoogle
        23
    loginbygoogle  
       2021-03-03 22:40:11 +08:00
    如果是商业应用,electron 分分钟给你破解,有 win32 或 Swift 基础,可以直接 Flutter
    wzzzx
        24
    wzzzx  
       2021-03-03 22:49:54 +08:00
    Qt,用 QML 开发分分钟的事
    ericls
        25
    ericls  
       2021-03-03 22:51:15 +08:00 via iPhone
    unity
    html
    LarryWang
        26
    LarryWang  
       2021-03-03 22:55:04 +08:00
    无远+ electron
    hnbcinfo
        27
    hnbcinfo  
       2021-03-03 23:59:59 +08:00
    xaml+C#

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

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

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

    当然,如果不嫌老,Swing 也行。
    diyisoft
        39
    diyisoft  
       2021-03-04 08:28:26 +08:00
    弱弱的推荐一下 Delphi 最新版本 :)
    AndyAO
        40
    AndyAO  
       2021-03-04 08:28:39 +08:00
    楼上说的 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
        41
    sarlanori  
       2021-03-04 08:35:18 +08:00 via Android
    qt 除了开发效率低一点,其他挺好的,大型项目还是推荐用 qt,项目不大的话都可以吧
    bthulu
        42
    bthulu  
       2021-03-04 08:52:32 +08:00
    unity 没人用么, 这个也能跨平台的, 招人也容易
    murmur
        43
    murmur  
       2021-03-04 08:55:20 +08:00
    @bthulu unity 没见过开发 app 的啊,都是做游戏
    missdeer
        44
    missdeer  
       2021-03-04 09:21:05 +08:00
    Qt 在 C++ GUI 框架中开发效率绝对算高的
    XIVN1987
        45
    XIVN1987  
       2021-03-04 09:24:53 +08:00
    qt 跨平台、性能好、功能丰富,,久经考验,值得信赖

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

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

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

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

    C++ 和 QT 用起来也不错

    后排提示, 跨平台扯着蛋
    Torpedo
        52
    Torpedo  
       2021-03-04 10:28:32 +08:00
    这么多推荐 flutter 的,想问下桌面端 flutter 有什么案例吗?
    paoqi2048
        53
    paoqi2048  
       2021-03-04 10:29:23 +08:00
    看你之前用的 MFC,那就 Qt 吧
    newmlp
        54
    newmlp  
       2021-03-04 10:31:11 +08:00
    Qt,久经考验
    crazytree
        55
    crazytree  
       2021-03-04 10:38:49 +08:00
    需要设计可以联系我:P
    TomVista
        56
    TomVista  
       2021-03-04 10:58:24 +08:00
    出产品当然 qt,electron,别的都是玩具
    shunia
        57
    shunia  
       2021-03-04 11:04:19 +08:00
    @noqwerty #30 应该是最新的稳定版发布后就计划好的,我感觉说是 2,其实主要就是网页平台基本 production-ready 了
    shunia
        58
    shunia  
       2021-03-04 11:06:56 +08:00
    @bthulu #42 Unity 因为是渲染引擎所以做 App 是挺耗性能的,很少有人选择。
    @murmur 游戏工具有用 Unity 做桌面端的,比如: https://www.fairygui.com/ 这个 UI 工具就是用 Unity 开发的跨操作系统的桌面端。
    loginbygoogle
        59
    loginbygoogle  
       2021-03-04 11:12:03 +08:00 via iPhone
    @weimo383 反编译太容易,被动开源不可取
    charlie21
        60
    charlie21  
       2021-03-04 11:22:17 +08:00
    kongziming
        61
    kongziming  
       2021-03-04 12:00:35 +08:00
    Qt,使用过 MFC 的话,用起 Qt 简单易上手
    darknoll
        62
    darknoll  
       2021-03-04 12:11:39 +08:00
    @TomVista 没玩过 CEF ?
    buzailianxi
        63
    buzailianxi  
       2021-03-04 12:14:51 +08:00
    qt
    g00001
        64
    g00001  
       2021-03-04 12:27:43 +08:00
    其实前端网页能共用就行了,没有必要底层一定要跨平台,这样避免不必要的给自己挖坑。
    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
        65
    littlewing  
       2021-03-04 12:51:38 +08:00 via iPhone
    electron 感觉很耗资源,不流畅
    BernieDu
        66
    BernieDu  
       2021-03-04 12:59:33 +08:00
    跨平台 UI 库还没黄啊。。android 和 iOS 本身就不应该共用一套设计,so stupid,外加原生开发体验很爽性能很高。没错,我是原生派
    QBugHunter
        67
    QBugHunter  
       2021-03-04 13:18:42 +08:00   1
    Qt 最优选,但如果选择 Qt 的话招人是个问题,搞 C++的工资要求都不低(不算我)
    Electron,不适合高性能产品,如果没有对性能上的追求,Electron 也是个好的选择
    fgodt
        68
    fgodt  
       2021-03-04 13:34:01 +08:00
    qt,electron 其他都不靠谱
    TomVista
        69
    TomVista  
       2021-03-04 14:05:13 +08:00
    @darknoll 没有
    lonewolfakela
        70
    lonewolfakela  
       2021-03-04 14:15:00 +08:00
    其实弄个 wine 也不是不可以……
    SenLief
        71
    SenLief  
       2021-03-04 14:18:57 +08:00
    qt 在跨平台上更友好,如果不在乎包大小,那无疑 electron 更方便。
    piaochen0
        72
    piaochen0  
       2021-03-04 14:23:01 +08:00
    @murmur 我们之前用 unity 做过 app,就是考虑跨平台,各种坑,包也特别大,很多东西也没解决方案。慎用...
    ACodelover
        73
    ACodelover  
       2021-03-04 14:51:23 +08:00
    GTK,最近刚发布了 GTK4
    Lemeng
        74
    Lemeng  
       2021-03-04 14:57:58 +08:00
    QT,容易,好上手
    Otho
        75
    Otho  
       2021-03-04 15:13:09 +08:00
    推荐 Qt ,qt5 完整的做过一个跨平台的网盘项目,系统差异大的需要自己处理一下,github 上多找找也有不少开源库。就是资料少一点儿,需要自己慢慢找。
    nutting
        76
    nutting  
       2021-03-04 15:13:14 +08:00
    知乎上的轮子哥搞了一个 ui 组件,你问问
    AmiKara
        77
    AmiKara  
       2021-03-04 15:46:55 +08:00
    不管选什么最后开发还是与开发能力有关,electron 确实有很多坑,但也有类似于 vsc 这种非常优秀的产品,还是得看个人的技术栈或学习能力。
    csulyb
        78
    csulyb  
    OP
       2021-03-04 15:52:03 +08:00
    @Otho #75 能说啥有哪些坑吗
    nerocc
        79
    nerocc  
       2021-03-04 16:23:55 +08:00 via Android
    真的需要发布包小的话,不要等框架,自己找一个类似于 WebWindow 这种的做前端,然后后端用一个自己懂得的高效率语言写一个,然后自己想办法打包起来。

    SteveSandersonMS/WebWindow
    yunyuyuan
        80
    yunyuyuan  
       2021-03-04 16:33:18 +08:00
    PyQt,写起来挺快,运行也不错
    wangxiaoaer
        81
    wangxiaoaer  
       2021-03-04 16:40:44 +08:00
    @Torpedo #52 同问,先找个 demo 运行下看看都找不到
    thtznet
        82
    thtznet  
       2021-03-04 17:10:17 +08:00
    MAUI,马上出正式版了
    ragnaroks
        83
    ragnaroks  
       2021-03-05 09:30:39 +08:00
    现在稳定的只有 QT,或许可以等 MAUI,其它的都是自娱自乐
    Otho
        84
    Otho  
       2021-03-05 10:28:27 +08:00
    @csulyb Qt 的坑说起来挺多,但是我在开发过程中基本遇到的都能有可以使用原生的解决办法。与 js 交互有点麻烦,WebEngine 需要 js 单独支持,文件系统有差异需要使用原生方法解决,网络库不是很好用,建议使用开源的库,比如 Google 的。再有就是打包方面的问题了: Windows 的资料比较多,Mac 和 Linux 的较少,Linux 的看你需求使用官方的也能行,我用的一个开源解决方案 https://github.com/probonopd/linuxdeployqt 。Mac 的可以看一下论坛里的帖子 ,我的博客中也有一些总结,比较简单,可以参考一下 https://blog.msmk.live/
    csulyb
        85
    csulyb  
    OP
       2021-03-05 11:22:50 +08:00
    @Otho #84 多谢分享
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2911 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 10:52 PVG 18:52 LAX 02:52 JFK 05:52
    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