• 互联网技术发展到今日,为什么 GUI还没有大一统的解决方案?
  • 发布于 10小时前
  • 26 热度
    9 评论
关注多端 GUI 解决方案将近十年了。十年来,像 RN 、Flutter 这样的自绘 UI 不少,大多都是昙花一现。当前无论做什么应用,一旦涉及到多端,最终都会回到 Web 技术栈。但是 Web 也没有真正通用的标准。一些美好的规范,像 PWA ,早已做土;反而 Cordava 倒是在不温不火地发展。唯一能满足『 Write once, run anywhere 』的只有 Electron 等 CEF 框架或者近几年兴起的 Tauri 等 Webview 框架,赋予 Javascript 原生能力,即兼顾开发速度,也有充实的生态。很好奇,图形界面出现四十多年了,Web 时代也有快二十年了,手机也诞生十五年了,但是为什么 GUI 还没有大一统的解决方案?GUI 真的没有银弹吗?多端 GUI 真的没有银弹吗

用户评论
  • 飛雲
  • 无银弹。这世界没魔法。就连 native gui 都不看重效率的今天,那么多人对 win11 ui 无反应的今天,这话题早就过期了。
  • 2025/7/3 16:18:00 [ 0 ] [ 0 ] 回复
  • 若如初见
  • 怎么说呢,flutter 刚出来时我就说了,它将成为 rn 的一种实现。去年看到过一个博主无聊整了一个 react-skia
    gui 的话,现在亮点是 gpui ,长桥刚出了一个 ui 包。另外 rust 那边也有新路线,c++这边的 dawn 目前没人往 ui 上面带,都在搞底层硬件光追那些。不过第三方产品很多,比如 riveo 和 rive ,这是两个产品,一个是 metal 做视频特效,一个自己开发的抽象层做交互取代之前的 lottie
  • 2025/7/3 16:16:00 [ 0 ] [ 0 ] 回复
  • 摇滚枷锁
  • 没有银弹,复杂的问题必然对应复杂的答案。GUI 没有完美六边形答案,如果有几个方面做的很强那必然其余方面会是短板。就比如 web 确实是个跨平台通解,但是是用性能和表现力换的。

  • 2025/7/3 16:14:00 [ 0 ] [ 0 ] 回复
  • 追梦魂
  • 你把 WebApp 当 GUI 的话,你现在访问这个网站就支持很多平台…
    另外,桌面端和移动端在交互上有个矛盾源自于鼠标指针和拇指的差异。
    具体的说就是,鼠标交互有双击,右键,指针悬停,选中范围
    手指点按没有那么精确,但却有双指,三指,指关节敲击。
    不管你怎么绘制图像这种问题都存在。
  • 2025/7/3 9:17:00 [ 0 ] [ 0 ] 回复
  • 青墨断笺
  • 本来 Web 就是那颗银弹呀 不集中力量继续发展 Web 推动标准化发展和实现 忙着各自圈地称王呢 技术是次要的 利益才是最重要的
  • 2025/7/3 9:08:00 [ 0 ] [ 0 ] 回复
  • 白笙枫客
  • 白衣煮茶  2025-07-03 09:02
    因为 GUI 太复杂。GUI 可以分成 retained 和 immediate 模式。Web 以及原生都是 retained 模式。style 和 layout 和 event 等影响渲染因素轮不到开发者控制,只能遵循平台规范。同样的效果要编写的代码又是不一样的。根本没办法复用。immediate 可以让开发者使用同一套逻辑渲染所有平台的效果。但难以实现复杂的动画效果以及每次重新渲染带来的性能损耗和功耗。此外还有一个最大的难点就是异步处理。主 ui 渲染时候如何和数据线程同步也是非常头痛的问题。不同平台的方案又不一样。尤其是 web ,不光要写前后端代码,还要尽可能避免大数据量交互时候性能问题。

    非常深刻的回答!

    retained 和 immediate 是完全不同的设计思路,但是似乎 immediate 能实现的 retained 都能实现,而且从架构上来讲,retained 将 style 、layout 与高层逻辑(业务)代码隔离,应该是更优秀的方法?有 immediate 能实现而 retained 不能实现的吗?异步是老生常谈的问题了,不过在 retained 模式下,搭配状态机,异步设计其实很自然(也可能是我想得太简单了,望指正);而且其实性能问题算是边界情况,大部分情况下,只要遵循一些基本原则,是很难碰见性能问题的?

    但是这还是无法解释,为什么直到现在,都没有一款引擎、一个框架,能够在全端大一统地解决性能、视效问题?

    或者说实际上 Webview ( CEF ) 已经能解决 90% 了,但是为什么移动端的大家都在拼命逃离 Webview ,创造像 Flutter 一样的渲染引擎?

  • 2025/7/3 9:06:00 [ 0 ] [ 0 ] 回复
  • 白衣煮茶
  • 因为 GUI 太复杂。GUI 可以分成 retained 和 immediate 模式。Web 以及原生都是 retained 模式。style 和 layout 和 event 等影响渲染因素轮不到开发者控制,只能遵循平台规范。同样的效果要编写的代码又是不一样的。根本没办法复用。immediate 可以让开发者使用同一套逻辑渲染所有平台的效果。但难以实现复杂的动画效果以及每次重新渲染带来的性能损耗和功耗。此外还有一个最大的难点就是异步处理。主 ui 渲染时候如何和数据线程同步也是非常头痛的问题。不同平台的方案又不一样。尤其是 web ,不光要写前后端代码,还要尽可能避免大数据量交互时候性能问题。
  • 2025/7/3 9:02:00 [ 0 ] [ 0 ] 回复