多端 GUI 真的没有银弹吗

5 天前
 Leon6868

关注多端 GUI 解决方案将近十年了。

十年来,像 RN 、Flutter 这样的自绘 UI 不少,大多都是昙花一现。

当前无论做什么应用,一旦涉及到多端,最终都会回到 Web 技术栈。但是 Web 也没有真正通用的标准。一些美好的规范,像 PWA ,早已做土;反而 Cordava 倒是在不温不火地发展。

唯一能满足『 Write once, run anywhere 』的只有 Electron 等 CEF 框架或者近几年兴起的 Tauri 等 Webview 框架,赋予 Javascript 原生能力,即兼顾开发速度,也有充实的生态。

很好奇,图形界面出现四十多年了,Web 时代也有快二十年了,手机也诞生十五年了,但是为什么 GUI 还没有大一统的解决方案?

GUI 真的没有银弹吗?

10106 次点击
所在节点    程序员
118 条回复
Daming
3 天前
Avalonia ,不比 shit 一般的套壳 chrome 好?
skallz
3 天前
@Torpedo 这点我就很佩服拼夕夕,拼夕夕实际上也是混开,用了大量的 webview ,这个已经有很多人解析过了,但是人家做到的流畅程度真不像是一个混开应用,像是纯原生,目前都不知道这么牛逼的优化是怎么做到的,他们技术团队也没开源。。。
agagega
3 天前
同一套代码跑不同平台的最优解就是 Web 。

如果不喜欢 Web ,也意味着最好别希望用同一套代码。各个平台的 native UI toolkit 也不可能是一致的,而因为原生软件一般还要依赖不少系统功能,所以哪怕是 Qt 这种自绘的很多时候还是要每个平台写一点具体的代码。

实际上我觉得都大模型时代了,更好的解法也许是针对项目需求针对性设计下,依赖倒置,把每个平台的 UI 都做成框架,然后交给 AI 去实现。
BingoXuan
3 天前
@lawfun
因为客户需要实时渲染 300 个信号,每个信号 1M 采样点。我研究和尝试很多方案。原生 macOS+metal 渲染开发效率太低做不来。imgui 因为是 immediate 渲染的,所以每次都要重建渲染 command 导致性能损耗太大。web 方案中,我尝试了 regl 渲染或者 p5js 渲染。目前选择了 uplot 渲染,并降低更新频率。gui 坑太大了,整个过程可以说是把 gpu 渲染和不同 gui 底层逻辑都搞清楚。后期有空我打算写一个 gpu 加速的 js waveform 库。
lawfun
3 天前
@BingoXuan 感谢分享,大佬厉害了。
iorilu
3 天前
所谓多端我觉得要把桌面和移动区分开

我不觉得以后有任何软件框架能完美覆盖桌面和移动

如果区分开

反正桌面吗, electron 和 tauri 我觉得还不错了, web 技术以后肯定也是主流, 要么喜欢成熟老技术就 qt ,其他就算了
Torpedo
3 天前
@skallz #102 如果用离线的 hybrid ,做到这个还是比较容易的。另外多多管理能力强,app 不臃肿。很多大厂是 app 太臃肿了,啥技术也没用,都卡
Leon6868
3 天前
@BingoXuan #104 太巧了,我也在做类似的项目,我做的是大约 7M 数据点的时频阈分析,这种规模的数据前端确实难以处理,目前是用 pyqt 展示的
debuggerx
3 天前
虽然还谈不上银弹,但是很多框架实际上已经做得很好了,只是太多人抱着固有成见不愿意承认罢了。
SilentOrFight
3 天前
@Torpedo #90 我说的 cdn 是图片放到 cdn 做多区域节点加速访问,现在有些官方活动页图片还是放在服务器上,带宽又小,多个人访问就炸了
BingoXuan
3 天前
@Leon6868
pyqt 还算可以的方案。可惜我们客户对依赖的 license 要求很严格。lgpl 这种都不允许。不涉及多信号渲染的话,我认为 imgui 的 python binding 反而更合适,比如 dearpygui 。
geliang0120
3 天前
Avalonia ,和 flutter 一样自绘, 语法是 C#, 一套代码跑全平台, 更偏向桌面端
Arthur2e5
3 天前
@Removable 跟随夜间模式是所有网站的特性,不是 PWA 的特性。让 PWA 能变成 Application 而不只是一个快捷方式的是本地存储、Service Worker 、通知之类的东西
Removable
3 天前
fun201108
3 天前
没有大一统,端想自成一派
fun201108
3 天前
没有银弹,端想自成一派
naythefirst01
2 天前
我觉得可以先考虑让 OS 大一统
xingheng
1 天前
@naythefirst01 OS 大一统永远都不可能,不过创建一个新的 UI 框架协议层还是可以有的。

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

https://ex.noerr.eu.org/t/1142560

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

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

© 2021 V2EX