关注多端 GUI 解决方案将近十年了。
十年来,像 RN 、Flutter 这样的自绘 UI 不少,大多都是昙花一现。
当前无论做什么应用,一旦涉及到多端,最终都会回到 Web 技术栈。但是 Web 也没有真正通用的标准。一些美好的规范,像 PWA ,早已做土;反而 Cordava 倒是在不温不火地发展。
唯一能满足『 Write once, run anywhere 』的只有 Electron 等 CEF 框架或者近几年兴起的 Tauri 等 Webview 框架,赋予 Javascript 原生能力,即兼顾开发速度,也有充实的生态。
很好奇,图形界面出现四十多年了,Web 时代也有快二十年了,手机也诞生十五年了,但是为什么 GUI 还没有大一统的解决方案?
GUI 真的没有银弹吗?
![]() |
101
Daming 2 天前
Avalonia ,不比 shit 一般的套壳 chrome 好?
|
102
skallz 2 天前 ![]() @Torpedo 这点我就很佩服拼夕夕,拼夕夕实际上也是混开,用了大量的 webview ,这个已经有很多人解析过了,但是人家做到的流畅程度真不像是一个混开应用,像是纯原生,目前都不知道这么牛逼的优化是怎么做到的,他们技术团队也没开源。。。
|
![]() |
103
agagega 2 天前
同一套代码跑不同平台的最优解就是 Web 。
如果不喜欢 Web ,也意味着最好别希望用同一套代码。各个平台的 native UI toolkit 也不可能是一致的,而因为原生软件一般还要依赖不少系统功能,所以哪怕是 Qt 这种自绘的很多时候还是要每个平台写一点具体的代码。 实际上我觉得都大模型时代了,更好的解法也许是针对项目需求针对性设计下,依赖倒置,把每个平台的 UI 都做成框架,然后交给 AI 去实现。 |
![]() |
104
BingoXuan 2 天前 ![]() @lawfun
因为客户需要实时渲染 300 个信号,每个信号 1M 采样点。我研究和尝试很多方案。原生 macOS+metal 渲染开发效率太低做不来。imgui 因为是 immediate 渲染的,所以每次都要重建渲染 command 导致性能损耗太大。web 方案中,我尝试了 regl 渲染或者 p5js 渲染。目前选择了 uplot 渲染,并降低更新频率。gui 坑太大了,整个过程可以说是把 gpu 渲染和不同 gui 底层逻辑都搞清楚。后期有空我打算写一个 gpu 加速的 js waveform 库。 |
![]() |
106
iorilu 2 天前
所谓多端我觉得要把桌面和移动区分开
我不觉得以后有任何软件框架能完美覆盖桌面和移动 如果区分开 反正桌面吗, electron 和 tauri 我觉得还不错了, web 技术以后肯定也是主流, 要么喜欢成熟老技术就 qt ,其他就算了 |
![]() |
108
Leon6868 OP @BingoXuan #104 太巧了,我也在做类似的项目,我做的是大约 7M 数据点的时频阈分析,这种规模的数据前端确实难以处理,目前是用 pyqt 展示的
|
![]() |
109
debuggerx 1 天前
虽然还谈不上银弹,但是很多框架实际上已经做得很好了,只是太多人抱着固有成见不愿意承认罢了。
|
![]() |
110
SilentOrFight 1 天前
@Torpedo #90 我说的 cdn 是图片放到 cdn 做多区域节点加速访问,现在有些官方活动页图片还是放在服务器上,带宽又小,多个人访问就炸了
|
![]() |
111
BingoXuan 1 天前
@Leon6868
pyqt 还算可以的方案。可惜我们客户对依赖的 license 要求很严格。lgpl 这种都不允许。不涉及多信号渲染的话,我认为 imgui 的 python binding 反而更合适,比如 dearpygui 。 |
112
geliang0120 1 天前 ![]() Avalonia ,和 flutter 一样自绘, 语法是 C#, 一套代码跑全平台, 更偏向桌面端
|
113
Arthur2e5 1 天前
@Removable 跟随夜间模式是所有网站的特性,不是 PWA 的特性。让 PWA 能变成 Application 而不只是一个快捷方式的是本地存储、Service Worker 、通知之类的东西
|
![]() |
114
Removable 1 天前
|
115
fun201108 1 天前
没有大一统,端想自成一派
|
116
fun201108 1 天前
没有银弹,端想自成一派
|
117
naythefirst01 19 小时 16 分钟前
我觉得可以先考虑让 OS 大一统
|
![]() |
118
xingheng 14 小时 1 分钟前
@naythefirst01 OS 大一统永远都不可能,不过创建一个新的 UI 框架协议层还是可以有的。
|