2023 年,有什么原生级性能的跨平台 UI 框架?

2023-07-08 09:57:15 +08:00
 w568w

月经问题了,以下贴已读过但是没有找到合适的:

打算开个 Side Project 写着玩。准备趁机学点新东西,满足一下自己的软件洁癖……

对框架的需求主要有:

  1. 至少支持 Windows 、Linux (X11)、macOS 三个主流桌面平台
  2. 尽可能不需要携带体积大的捆绑库(如 CEF );
  3. 内存占用小,启动速度接近原生
  4. 支持丰富的文本排版格式(例如同行内图文混排等)。

已经尝试过但不合适的有:

  1. PWA:内存占用大,需要下载浏览器;
  2. Electron:内存占用大,需要携带近百 MB 的 CEF ;
  3. Tauri:内存占用大,冷启动时空屏时间极长;
  4. ReactNative:内存占用大,冷启动时空屏时间长;
  5. JavaFX / Compose Multiplatform:冷启动速度慢,需要携带 JRE ;
  6. Sciter:对 Linux 的支持基本放弃(声称支持 X11 ,实测官方 Demo 无法正常渲染);
  7. FLTK:Windows 下的中文字体渲染非常糟糕;
  8. OpenGL/Vulkan:这不算 UI 框架吧?

使用的语言无所谓,主流框架的基本多少会一点。

之前有 Flutter 和 Android 的开发经验,所以推荐 Flutter 就免了。这不是想学点新玩意吗😂

21901 次点击
所在节点    程序员
106 条回复
roundgis
2023-07-08 14:54:42 +08:00
@duke807 20 年前用過 和寫 mfc 差不多
NoOneNoBody
2023-07-08 15:00:06 +08:00
好像除了 QT 都否决了?按这个思路,QT 理应也被否决才对啊
dcsuibian
2023-07-08 15:12:57 +08:00
React Native 只是给 Android 和 iOS 用的,毕竟原理上是编译成原生组件,平台越多问题越多
所以桌面平台一般没有 native ,还是 Electron

目前看来 Flutter 还是最有希望的,但现状确实比较拉
w568w
2023-07-08 15:46:28 +08:00
感谢以上各位的回复,V 友们太热情了

@chinuno 这个看文档的说法是 "is particularly suited to integration in game engines (for tooling), real-time 3D applications ... to create content creation tools and visualization tools (as opposed to UI for the average end-user)." 好像是用来做嵌入式 UI 的?

@dandycheung 这好像是写声学应用的领域框架?

@iorilu 能介绍一下性能怎么样吗? Python+Qt 的组合感觉不怎么正经

@pepsiwant 重点在后半句,速度接近原生。就一般经验来说,内存占用和速度成正比?

@nikenidage1 哈哈确实没看到,已 star

---

感觉基于 C++ 的 Qt 、GTK 和 基于 C# 的 Avalonia 快成唯二解了? Delphi 好像半个身子入土了,slint 、wxwidgets 搂了一眼感觉功能性捉急……
lujiaxing
2023-07-08 15:52:39 +08:00
@w568w 是的. 你这种极端需求基本上 QT / Avalonia. 其他没得选.
missdeer
2023-07-08 16:19:22 +08:00
wxWidget 的运行速度更快,毕竟是真原生,但 API 跟 MFC 高度相似,就是上个世纪的风格,会觉得很落后难用。
Qt 运行速度比 wxWidget 肉眼可见的慢一丢丢,比如弹出菜单能明显感觉会比纯原生的迟滞一点点,但毕竟是 C++的,还是很快的,重点是它的 API 设计得很好,比 wxWidget 好一个时代,以及官方文档和示例非常好。
wxf666
2023-07-08 16:31:26 +08:00
@chengxiao #39 Windows 上还有哪些 flutter 应用吗?想去体验一下
tanranran
2023-07-08 16:35:27 +08:00
@wxf666 #47 企业微信,钉钉
wxf666
2023-07-08 16:38:51 +08:00
@everyx @hez2010 @DTCPSS 请问有哪些比较著名的 Avalonia 应用吗?想去体验一下
ysc3839
2023-07-08 16:42:50 +08:00
要原生跨平台的话,基本只有 React Native 了吧?不过不支持 Linux 。
ysc3839
2023-07-08 16:47:22 +08:00
如果只是要接近原生 GUI 框架的性能,Chromium 方案应该能满足的,Chrome Edge 启动速度都挺快的。
要求太多的话基本只能自己写了,因为功能多通用性强的话免不了要带上自己用不到的功能,体积就会大。
另外 Electron 和 CEF 没关系,Electron 是自己编译 Chromium 的。
DTCPSS
2023-07-08 16:52:21 +08:00
putaozhenhaochi
2023-07-08 17:00:12 +08:00
桌面版企业微信,钉钉用的 flutter ?
nong99
2023-07-08 17:17:43 +08:00
嗯…前端个人在想转桌面开发,观澜一圈~想从.net 入手,看着 C# Avalonia 作为入门目标了~ (都说 c++太难,不然都考虑 QT 了)
tanranran
2023-07-08 17:26:18 +08:00
@nong99 #54 可以用下使用 Electron 开发的 QQ NT ,体检巨好,我几百个千人群都不咋卡
nong99
2023-07-08 17:30:56 +08:00
@tanranran 感谢🙏前端切换 Electron 确实成本最平滑~ 之前也是用其开发过一个站外包业务桌面软件!确实考虑深入优化成本、同时也私心想多学一门语言~可拓展性范围大些哈
kingfalse
2023-07-08 17:40:26 +08:00
Java 系的话要原生就 swt ,linux ,mac ,Windows 都支持,eclipse 就是用 swt 开发的
roundgis
2023-07-08 17:50:49 +08:00
@nong99 如果你只是限定用 qt 的东西,cpp 其实也没那么难
iorilu
2023-07-08 17:58:07 +08:00
@w568w 我自己用 pyqt 开发跨 windows 和 macos 项目的

性能和原生没什么区别

跨平台也不错, 我都是 windows 开发,macos 可能该几行就能编译通过
documentzhangx66
2023-07-08 20:43:40 +08:00
等你开发经验 10 年以上了,你才会明白,内存占用大,是优点。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/955040

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX