I2.11.4each chunk a coherent state设计

分块呈现的每一步都应是自洽的可用状态而非半成品

别名: 逐步自洽 · 不是半成品 · usable intermediate

概念解释

逐步呈现停在任何一帧,这一帧都应当是一个自洽的可用状态:该有的标签在、数字和单位成对、主操作要么能做要么明确还不能做、没有指向尚未存在的控件的句子。半成品是另一回事:标题在、价格位置空白却按钮写着「立即以 -- 购买」、表格缺列名、一段话写到一半。分块是时间上的切片,不是把对象切成不能单独拿出来的碎片。

机制

人可能在任何一帧离开、截图、读屏朗读、或把这一帧当成完整来行动。自洽要求每一帧都能单独拿出去仍讲得通。半成品把内部组装过程暴露成界面:缺的不是「还有一块在路上」——那可以是一个合法的未完成线索——而是「已经画出来的那部分自己语法坏了」。语法坏了的界面会被当成产品坏了,而不是当成加载中。

自洽与「看起来完整」不同。自洽允许标明未完,只要已呈现的命题为真。一张表可以只有三列且注明「更多列加载中」,这是自洽的未完;三列里数字对不上列名,是半成品。主按钮可以禁用并写「价格加载中」,这是自洽;按钮可点但价格是占位符,是半成品。逐步呈现的每一步是状态机上的合法态,不是渲染器的中间缓冲区。

边界

骨架自己不是半成品,它声明的是占位,不是残缺的真内容;骨架停太久会变成残缺真页面,那是骨架时效问题。动画过渡的中间帧(淡入到 40% 透明度)不必自洽到可操作,但应短,且不可被截成「这就是产品」。无障碍树上若把未完成的残句读出来,自洽在视觉上成立、在听觉上失败,文本节点不要挂半截字符串。数据在服务器侧就是半截(断流的生成),界面应标成「生成中断」这类状态,而不是把半截当正文。

怎么落地

  • 每个块上屏前问:拿掉尚未到达的其余块,这一屏的句子、数字、按钮是否仍为真、仍可解释。
  • 缺依赖的操作走禁用加原因,不要走带占位符的可点。
  • 表格、表单、价格这类成对信息一起到,或一起不出,避免列名和单元格分两次画成错位的真内容。
  • 验证:在主列到达、其余全断的那一帧截屏并读屏。若出现「--」「undefined」、残句、或指向不存在控件的说明,这一帧就是半成品。修到这一帧可以单独给人用,再谈后续块。

延伸

  • 同组I2.11.1 逐步呈现需要为尚未到达的区块预留空间以避免布局抖动 · I2.11.2 用户可能在内容尚未完全到达时就开始操作,需要处理这种早期交互 · I2.11.3 呈现节奏过快会让用户误以为内容已完整而遗漏后续到达的部分
  • 相邻I2.03 分块加载 · I2.08 加载失败 · I3.13 状态机的完备性与非法状态
  • 站内检索coherent intermediate state · half-built UI · usable chunk

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/I2.11.4