UX设计模式:内部工具中两个小而巧妙的实用组件
原创UX设计模式:内部工具中两个小而巧妙的实用组件
从桌面UX演讲到内部工具设计
我最近看了一场Scott Jenson关于桌面UX的演讲,讲的是桌面环境下交互设计的一些思路。看完之后我把自己在内部工具里反复用到的设计模式翻出来想了一遍,发现有些模式我几乎每写一个内部应用都在用,但从来没系统地说过。 来源:SB
构建内部工具和面向消费者的产品很不一样。面向消费者的产品要考虑市场接受度、用户习惯、品牌调性,内部工具只需要考虑真正用它的那拨人。我自己在写内部工具时也有这种感受,设计自由度更大,这是整个设计思考的起点。 来源:SB
这篇想讲两个我特别喜欢的小组件,一个是CycleableDateTime,一个是GlobalQueryLoader。前者处理时间显示,后者处理加载状态,都不复杂,但解决的都是内部工具里很实际的问题。每次在内部应用里用到它们,我都会觉得省了不少事。 来源:SB
CycleableDateTime:全局可循环的时间显示模式
时间戳在内部工具里几乎是标配,但显示格式却很难一劳永逸。用户在不同页面可能想看不同格式,同一用户在不同页面也可能想要不同格式。UTC、本地时区、相对时间,这三种格式各有各的用处。 来源:SB
CycleableDateTime的处理方式很直接。一个全局应用级配置值控制所有实例的显示格式,点击任意一个CycleableDateTime组件,所有实例会一起在UTC、本地时区、相对时间三种模式间循环切换。 来源:SB
2025-01-18T05:22:23.000Z会渲染成Jan 18, 2025, 5:22:23 AM;2022-08-10T19:23:54.000Z会渲染成Aug 10, 2022, 7:23:54 PM;2020-04-19T13:17:32.000Z会渲染成Apr 19, 2020, 1:17:32 PM。悬停任意一个实例,会显示当前使用的格式。 来源:SB
这个设计有个反直觉的地方。我一开始觉得,用户在不同页面想要不同格式,那应该每个页面单独设置才对。但仔细想想,全局统一切换更高效。用户在一个页面把时间格式切换好,走到另一个页面发现格式不对,再点一下全局切换就全变了。不用每个页面去记自己的偏好。 来源:SB
GlobalQueryLoader:基于TanStack Query 的全局加载指示器
所有应用都要加载数据。触发加载的方式有好几种,自动的、程序化的,或者用户点击按钮。用户需要知道什么时候在加载,否则容易误操作。 来源:SB
GlobalQueryLoader的思路很轻。它利用TanStack Query导出的useIsFetching hook,当这个hook的返回值大于0时,说明有东西正在被获取,组件就渲染一个加载指示器。 来源:SB
我通常把加载指示器放在导航栏或者跨路由可见的常驻位置。这样无论用户在哪个页面,都能看到全局的加载状态,不用每个页面自己画一遍。 来源:SB
我的所有内部应用都用TanStack Query,所以这个模式可以无缝集成,不需要额外引入别的状态管理库。 来源:SB
社区反响与多源交叉验证
这篇文章在Hacker News上只拿到2分,0条评论。 来源:HN 原文提供了相当具体的组件细节,包括渲染结果和实现方式,但HN社区没有产生任何讨论。
我不太确定这是为什么。也许是内部工具这个领域本身不在HN的关注范围里,也许是这类设计模式太直白,不值得讨论。原文强调内部工具设计自由度更大,但社区数据并没有支持这个判断的传播。 来源:HN 来源:SB
就我自己的判断,这两个模式在内部工具场景里确实实用。CycleableDateTime解决了时间格式的全局切换问题,GlobalQueryLoader让加载状态一目了然。但社区零讨论也说明,它们还没被广泛验证。我不确定这个模式会不会被更多人接受,至少我自己愿意在内部工具里继续用。 来源:SB
原文:
UX Design Patterns · 来源:Hacker News
作者:itfan123 值班编辑 · 发布于 2026年10月28日
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123




