V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yanque
V2EX  ›  前端开发

关于 GUI 开发

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

    GUI 开发相关

    桌面 GUI 开发

    写 web 端界面写多了, 总感觉桌面的框架比如 QT, 用代码写起来非常麻烦.

    主要是样式的调整吧, 比如 web 端可以直接用 chrome 的 devtools 调试样式, QT 这样的貌似就没有.

    但是, 如果每个桌面产品都用 web 那套的话, 每一个都会套一个 electron, 一方面是打包会很大, 一方面用户也不喜欢.

    业界貌似也没有一个统一多 electron 整合方案.

    移动 GUI 开发

    也简单找了下移动跨平台的框架. 最令人亲切的还是 React Native 吧. 但是实际使用才知道还是有差异, div 那些 web 标签没有了, 变成了 view 等.

    另外类似桌面 F12 的 devtools 也比较难用.

    ======分割线======

    不知道大家对上面的观点有啥看法

    另外也想了解了各位使用的 GUI 技术栈与易用性

    第 1 条附言  ·  38 天前
    写了半天的总结, 提交的时候就没了... 离谱, 站点没草稿功能...

    哎, 总结不再写了. 只说下结论吧.

    看了下大家的建议.
    如果要比较容易的绘制界面(还是少不了 HTML/CSS)

    考虑跨平台支持移动端, 可以试试 compose-multiplatform,
    但是我不知道具体开发时候难度怎么, 看文档是比较贴近 html 的.
    (flutter 绘制界面比较麻烦, 切 windows 开发得关闭虚拟内存, 所以不提)


    仅考虑桌面端的话, 使用

    - go + wails
    - rust + tauri

    可以基本集成 web 渲染, 打包较小. 就是性能要差点

    当然如果公司要让你做桌面程序的话, 相当部分人还是会选择 electron, 比较技术社区都比较成熟, 开发也简单
    25 条回复    2024-10-24 16:42:08 +08:00
    yiqiao
        1
    yiqiao  
       38 天前
    目前用的是 golang 的 wails 。https://wails.io/ 桌面三端打包方便
    或者可以看看 Rust 的 tauri 。https://tauri.app/
    当时用过 electron ,demo 打包出来就 180M 了,我直接 pass 了。
    tsanie
        2
    tsanie  
       38 天前
    WinUI 或者 .NET MAUI/Xamarin.Forms 开发的话有 XAML Hot Reload
    northluo
        3
    northluo  
       38 天前
    @yiqiao golang 的一开始用的 fyne ,很多界面功能都不好做,包括列表下拉,二级列表展示点击啥的,后来用 pyqt 写的,还是 pyqt 实现起来方便很多,文档也够全
    Vaspike
        4
    Vaspike  
       38 天前
    我会推荐 kotlin compose desktop, 桌面端可以分发 win+ mac + linux(rpm 和 apt)
    由 compose jetpack(安卓新一代官方框架)分化而来, 移植到手机端也比较可行
    桌面端+ 移动端就变成了 Multiplatform
    官网: https://www.jetbrains.com/compose-multiplatform/
    想快速了解代码的模样可以看我之前的一篇博客,结尾有成品截图: https://www.jetbrains.com/compose-multiplatform/
    Vaspike
        5
    Vaspike  
       38 天前
    mioktiar56
        6
    mioktiar56  
       38 天前
    对 C++er 来说,Qt 已经是非常便捷了;

    对于调试,不能用写脚本的思维去看待编译型语言;
    Skifary
        7
    Skifary  
       38 天前
    QT 有一个 KDAB 出品的调试工具叫做 gammaray ,可以在运行时修改 QT 对象的属性
    lisongeee
        8
    lisongeee  
       38 天前
    虽然但是,kotlin compose desktop 和 electron 自带 chrome 一样

    每一个都自带一个 jre ,你电脑里有多少应用就有多少个 jre ,并且 kotlin-native 目前处于不可用状态
    shadowyue
        9
    shadowyue  
       38 天前
    chromium 内核说不定会变成每个平台的必须装的依赖,这样就解决一切了
    dimwoodxi27
        10
    dimwoodxi27  
       38 天前
    以前搞 javafx 感觉组件样式动画都挺丰富的,唯一缺点就是打包了,得带一个 jre ,而且和非常容易被解壳浏览源代码;再到后面用 go 的 fyne ,起码是直译的还能交叉编译,但组件库算是基础都有吧,样式啥的很局限性,编译大小通常为几 M 到几十 M ,总体感觉不如用 VB6 写的爽,编译才几百 KB ,但 VB6 追求美观也麻烦也不能像前两者一样跨平台
    YUCOAT
        11
    YUCOAT  
       38 天前
    Qt 没有 devtools 调试界面确实有点方便。每当界面显示效果不符合我的预期的时候,我一般用 qss 给一些 QWidget 设置一个半透明的背景色的排查布局问题。

    除此之外的问题解决起来还好,因为 IDE 有内置调试器,调试器功能一定程度上跟 devtools 的功能是重叠的。
    tsanie
        12
    tsanie  
       38 天前
    @shadowyue #9 然后程序 A 依赖 >= 130.0.2849.52 ,程序 B 依赖 >= 120.0.6083.0 and < 121.0.6141.1 ,程序 C 依赖 <= 119.0.5998.1 /doge
    iOCZS
        13
    iOCZS  
       38 天前
    所有的问题都是因为不具备互操作性
    corcre
        14
    corcre  
       38 天前   ❤️ 1
    @shadowyue #9 欧盟: 你看这钱不就来了吗🐶
    shadowyue
        15
    shadowyue  
       38 天前
    @tsanie 只是拿 chromium 来画 UI 界面还好,就算有无数的历史包袱,html 和 css 的兼容性、稳定性已经很强了。
    mainjzb
        16
    mainjzb  
       38 天前
    qt 相当复古。所以现代通常会考虑 flutter 方案或者其他 webview 调用方案。介于前两者目前成熟度只有 90%,商业上通常还是更倾向于用 electron
    CLMan
        17
    CLMan  
       38 天前
    个人只对桌面 GUI 跨平台有些了解。

    wails 和 tauri 都是基于桌面系统自带的 webview ,优点是不需要像 electron 那样每个应用带一个运行时,但较老的 Windows 系统,得自带运行时的安装包或者下载器,或者让用户手动安装运行时。webview 的缺点就是性能较差,首屏加载有 0.5s~1s 的延迟。

    如果对桌面 GUI 的性能有追求,那用 flutter 不错,磁盘占用、内存占用、性能都很优秀。

    Compose Multiplatform 本质上就是 Java GUI ,试用过两个基于其开发的产品,内存占用和磁盘占用表现较差。
    CassianVale
        18
    CassianVale  
       38 天前
    目前我是使用的 pyside6 开发跨平台应用,我也用过 electron-vite 做开发,但后来感觉 electron 打出的包太大,毕竟里面有个 chromium 内核,优势就是对前端比较友好,你也可以试试 flutter ,all in one ,但是对 web 端的支出做的不是特别好,而且有学习成本,安卓端要会 Java/Kotlin 、Dart 之类的语言,你可以看下这个 up 主对于 flutter 的分析,我觉得讲的挺好: https://www.bilibili.com/video/BV1D8411o71k
    skallz
        19
    skallz  
       38 天前
    @CassianVale 其实我感觉 electron 的最大优势是对一些复杂效果或者边缘场景的兼容做的非常好,很多其他技术实现起来非常困难的效果对于前端技术栈来说就几行代码,比如 qq 就有一部分原因是原先部分效果难以实现才将 ui 层换到 electron
    timethinker
        20
    timethinker  
       38 天前
    过渡到直接用游戏引擎来做,啥效果都能实现,还能转行做游戏
    shintendo
        21
    shintendo  
       38 天前
    你是否在找 Tauri
    1una0bserver
        22
    1una0bserver  
       38 天前 via Android
    @lisongeee 有个用 graal 打包 compose desktop 的项目,可以看看: https://github.com/esp-er/compose-graal-hello
    还有一种思路,就是 Webview 里跑 compose for Web
    lisongeee
        23
    lisongeee  
       38 天前
    @1una0bserver #22

    不是主流方案,基本没有什么人用,也没有官方的支持

    compose for Web 只能管渲染,和本地交互用什么呢?并且只能用 kotlin 库,用不了 java 的生态

    另外 Webview 兼容性如何呢?还得支持 wasmGc ,还不是得回到了 electron 路子

    不可否认的事实是绝大多数用户根本不关心你用的啥

    很多人连计算机基础都没有,只管打开点点就完了

    在他们眼里 10MB 其实和 100MB 没什么区别,实现客户的功能才是首要的,谁管你用的什么技术
    Yjhenan
        24
    Yjhenan  
       38 天前
    会 C#可以 avalonia 有中文文档,可以 aot 编译成独立无依赖 exe ,体积压缩下 10 兆不到
    kevan
        25
    kevan  
       37 天前
    aardio
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:33 · PVG 11:33 · LAX 19:33 · JFK 22:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.