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

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

  •  1
     
  •   csulyb · 270 天前 · 7337 次点击
    这是一个创建于 270 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想做一款类似百度网盘(主要 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   270 天前 via Android
    你的方案里 1 是不能跨平台的,2 已经不太流行了,只剩下 3 4 可选,你又觉得 4 太大,那只有 3 了。
    fixend
        2
    fixend   270 天前
    我的话,只考虑 Flutter 或 electron
    PUBG98k
        3
    PUBG98k   270 天前
    csulyb
        4
    csulyb   270 天前
    @ysc3839 qt 好像现在使用的人不多,怕采坑
    @fixend Flutter 坑多吗, 有没案例
    csulyb
        5
    csulyb   270 天前
    @PUBG98k 多谢,我了解了下,好像国内没有商业产品用这个
    Shazoo
        6
    Shazoo   270 天前   ❤️ 2
    2 年前,也纠结 QT 还是 Electron 。最后选了 Electron……

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

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

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

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


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

    也有不少人就是直接套个 qtwebview 直接上的
    kylix
        22
    kylix   270 天前
    lazarus

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

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

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

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

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

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

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

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

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

    C++ 和 QT 用起来也不错

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

    SteveSandersonMS/WebWindow
    yunyuyuan
        80
    yunyuyuan   269 天前
    PyQt,写起来挺快,运行也不错
    wangxiaoaer
        81
    wangxiaoaer   269 天前
    @Torpedo #52 同问,先找个 demo 运行下看看都找不到
    thtznet
        82
    thtznet   269 天前
    MAUI,马上出正式版了
    ragnaroks
        83
    ragnaroks   268 天前
    现在稳定的只有 QT,或许可以等 MAUI,其它的都是自娱自乐
    Otho
        84
    Otho   268 天前
    @csulyb Qt 的坑说起来挺多,但是我在开发过程中基本遇到的都能有可以使用原生的解决办法。与 js 交互有点麻烦,WebEngine 需要 js 单独支持,文件系统有差异需要使用原生方法解决,网络库不是很好用,建议使用开源的库,比如 Google 的。再有就是打包方面的问题了: Windows 的资料比较多,Mac 和 Linux 的较少,Linux 的看你需求使用官方的也能行,我用的一个开源解决方案 https://github.com/probonopd/linuxdeployqt 。Mac 的可以看一下论坛里的帖子 ,我的博客中也有一些总结,比较简单,可以参考一下 https://blog.msmk.live/
    csulyb
        85
    csulyb   268 天前
    @Otho #84 多谢分享
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1017 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:59 · PVG 02:59 · LAX 10:59 · JFK 13:59
    ♥ Do have faith in what you're doing.