高密度信息被梳理为清晰页面结构的示意

最近我开始自己做一个基础设施项目的前端。AI 很快就能把页面搭出来,增删改查、筛选、状态标签一项不少,第一眼甚至挺像那么回事。

真正用起来,别扭的地方就出来了:页面里的信息很多,却不知道先看什么;关联资源、上下文和状态散在各处;下一步该做什么,也得靠人自己在一堆字段里拼出来。

组件其实没有选错。问题在于,我一开始只把它当成 CRUD 页面来做:先列字段,再补筛选和操作,最后才发现用户还是不知道该从哪里开始。数据是齐的,页面却没有帮用户排出理解和行动的顺序。

后来我把自己会做的判断整理成了一份页面组织指南。表格、看板、日历这些组织信息的基本方式,我在指南里统称为“表达骨架”。

当大家都来写产品页面

我的工作一直以后端为主。虽然我也对前端和其他技术感兴趣,平时会做一些尝试,但真正投入工作的,还是后端。最近团队的前端资源缩减,我开始亲自承担前端项目。

这次我没有打算从零设计一套组件规范,而是选择 Ant Design 加 Ant Design Pro 作为基础。原因很实际:企业后台里常见的表格、表单、布局、导航和描述信息,都有比较成熟的现成方案,页面外壳和组件行为也容易保持一致。基础问题交给组件库处理,我可以把时间花在信息怎么组织、用户先看什么上面。

这套规范并不会替页面做决定。它只是先把实现的起点固定下来,避免每个页面都重新讨论颜色、间距和组件样式。真正需要判断的,还是页面要围绕什么对象展开,以及用户准备拿这些信息做什么。

这件事让我重新碰到一个老问题:代码写出来,页面不一定就设计好了。用 AI 写前端时,这个差别尤其明显。它能补组件、样式和交互,却不知道用户来到页面后最该先理解什么、判断什么,下一步又要做什么。

我想把自己在这方面的一些方案和判断拎出来,让团队同学也能用。页面“看着不对”往往只是一个感觉,只有具体说出主信息没立住、关联信息散了、操作放错了位置,才有办法一起讨论,也才好交给 AI 修改。

这份页面组织指南就是其中一部分。它既是我自己写前端时的检查表,也希望成为团队把 AI 用到前端项目里时,共用的一套判断依据。

如何组织信息架构

我看一个高密度页面,通常不会先去找组件。先把下面三个问题想清楚,后面的选择会容易很多。

  1. 用户打开页面时,最重要的是看到什么?
  2. 为了理解这件主信息,还要看到哪些关联资源、关联模型和上下文?
  3. 用户看完后要作出什么反应、执行什么动作,或者继续思考什么?
mindmap
  root((页面信息架构))
    主信息[主信息]
      用户首先看到什么(用户首先看到什么)
    关联信息[关联信息]
      资源(资源)
      模型(模型)
      上下文(上下文)
    用户动作[用户动作]
      判断(判断)
      操作(操作)
      下一步(下一步)

我先把这三个问题过一遍,至少能知道用户进来要做什么。等这件事清楚了,再回头看表格、看板还是日历,通常不会选得太偏。

目前的 demo 用 Ant Design 实现。判断本身和组件库无关,换到其他技术栈时,具体组件还得结合项目调整。

从列表和详情走向复杂信息组织方式

CRUD 很适合处理数据操作,列表和详情页也一直有用。只是它们主要回答“这条记录怎么增删改查”,不太回答用户进入页面后先看什么、需要什么反馈,以及要依据哪些信息做决定。

API 只负责把数据和操作交出来,页面还得把它们之间的关系摆清楚:用户先看什么,接着比较什么,最后在哪里操作。

范例:GitHub Projects 信息布局

GitHub Projects 的布局说明很适合拿来做对照。同一个项目条目,可以放进表格、看板,也可以放到时间线式的路线图里。数据没变,用户读它的方式变了。

如果拿一批待开发任务来对照这些布局,三种视图分别会把注意力带到不同的地方:

GitHub Projects 的表格布局

GitHub Projects 的看板布局

GitHub Projects 的路线图布局

眼前要回答的问题 需要放在一起的信息 可选择的表达骨架
哪些任务优先处理,分别由谁负责? 优先级、负责人等字段 表格,按列对照和排序
哪些任务还在进行,哪些已经完成? 任务所处阶段 看板,按状态分组
几项工作安排在什么时间,是否重叠? 开始、结束日期和持续时间 路线图,在时间轴上观察

排下一轮工作时,我会把优先级和负责人放在固定的列里,排好序后逐行看分工。换成卡片,同一个字段的位置就没那么稳定,比较起来反而要来回找。表格在这里的价值很简单:让比较发生在固定的位置。

跟进进度时,我关心的是“还有哪些在处理中”。把任务按状态排成几列,先找到阶段,再看里面的条目,会更符合这个动作。如果还能直接拖动卡片推进状态,页面位置和操作也能接上。

安排交付时间时,只知道“进行中”就不够了。把开始和结束日期放到时间轴上,几项工作的区间是否重叠会立刻显出来。至于是不是真的排不开,还要回头看负责人和工作量。

后台页面不需要把三种视图都做一遍。页面主要服务一种任务,就先把这一种做好;只有确实有多种高频用法时,才值得增加视图。每多一种视图,筛选、状态和操作就多一份维护成本。

Notion 的数据库视图也是类似的例子。准备发布一批内容时,挑封面可以切到图库,检查发布日期可以切到日历。日历能让我看到日期分布,但它不会自动告诉我资源有没有冲突;要回答这个问题,还得有时间范围和资源占用这些信息。

Notion 数据库视图

我平时也会看一些产品怎么处理类似问题。GitHub 让我印象最深的是,它总是围绕一个核心对象展开,不急着把所有信息都塞进来。Twitter 更像是把同一个对象放到不同场景里处理。淘宝面对的数据量很大,但商品和交易动作一直很突出。豆瓣的数据类型很多,页面却各有自己的组织方式。它们的样式当然不能直接搬过来,但看这些页面时,我会留意用户眼前到底要做什么。

所以我现在会先把页面要解决的事说清楚:用户来到这里,究竟要看懂什么、比较什么,还是推进什么。这样比一上来想着“做一个现代化后台”更容易找到方向。

如何选择合适的信息结构

guide 的 2.2 里,这个选择过程被画成了一条完整路径:先看系统里有哪些对象和关系,再看用户要完成什么,接着判断信息本身是什么结构,最后才落到具体的表达方式。

flowchart TD
    A[Confirm the user, trigger scenario, and success outcome] --> B{Does it need a standalone page?}
    B -->|No independent address, permission, or ongoing task| B1[Fold into an existing page or task flow]
    B -->|Needs sharing, recovery, wide space, or independent permissions| C[Determine the single primary task]
    B1 --> C
    C --> D{Primary task intent}
    D -->|Find, locate| D1[Collection / hierarchy / space]
    D -->|Understand, judge| D2[Single object / relationship / document]
    D -->|Compare, analyze| D3[Collection / diff / metrics]
    D -->|Advance, process| D4[Queue / process state / config rules]
    D -->|Trace, collaborate| D5[Event sequence / discussion & collaboration]
    D1 --> E[Choose one primary information model]
    D2 --> E
    D3 --> E
    D4 --> E
    D5 --> E
    E --> F{Expression that directly answers the primary question}
    F -->|Field-by-field comparison| F1[Table]
    F -->|Identify and enter a resource| F2[List / resource catalog]
    F -->|Image is the recognition anchor| F2B[Card grid]
    F -->|Parent-child or path| F3[Tree / tree table]
    F -->|Dependency or impact| F4[Adjacency list / relationship graph]
    F -->|Object identity and current state| F5[Object summary / sectioned detail]
    F -->|Stage and next step| F6[Steps / status workspace]
    F -->|Stage flow, moving is the action| F6B[Kanban / swimlanes]
    F -->|What already happened| F7[Timeline / activity feed / log]
    F -->|Who said what and how it was answered| F7A[Discussion thread / review thread]
    F -->|What changed, before vs after| F7B[Diff view]
    F -->|Trend, distribution, or anomaly| F8[Metrics / chart / analytics drill-down]
    F -->|Location, boundary, or spatial distribution| F8A[Map / spatial canvas]
    F -->|When is it occupied, when does it conflict| F8B[Calendar / scheduling]
    F -->|Policy and constraints| F9[Grouped form / rule table / matrix]
    F -->|Continuous reading and section navigation| F10[Document body / table of contents]
    F -->|What to work on next| F11[Queue / inbox]
    F1 --> G{How to maintain task context?}
    F2 --> G
    F2B --> G
    F3 --> G
    F4 --> G
    F5 --> G
    F6 --> G
    F6B --> G
    F7 --> G
    F7A --> G
    F7B --> G
    F8 --> G
    F8A --> G
    F8B --> G
    F9 --> G
    F10 --> G
    F11 --> G
    G -->|Repeatedly switching objects or evidence| G1[Master-detail split / workbench]
    G -->|Supporting content is light and transient| G2[Expandable section / Drawer]
    G -->|Content is shareable or needs wide space| G3[Standalone page]
    G -->|Short confirmation or minimal input| G4[Modal / Popconfirm]
    G1 --> H[Add the necessary supporting models to form the page type and skeleton]
    G2 --> H
    G3 --> H
    G4 --> H

不能因为 API 返回了一个数组,就顺手做成表格;也不能因为路由里有一个 ID,就默认做成详情页。同一个对象,用户在查找时可能需要列表,处理时可能需要状态流转,协作时又可能需要讨论线程。

guide 里的完整分支图还会继续追问主任务和主问题。例如逐字段比较适合表格,图片是识别锚点时可以用卡片网格,阶段流转适合看板,关注时间占用和冲突才使用日历。记录有日期,只能说明数据里有日期,不能直接决定页面应该用哪种结构。

选完以后,我会再走一遍真实操作:用户最常比较的信息有没有放在一起,最常做的操作是不是就在旁边。如果还得反复打开详情,记住上一条记录再回来比较,结构和字段安排大概还得重看。

反列表和详情示例:卡片、看板、日历排期、仪表盘等

demo 把这些判断做成了几组可以直接打开的页面。看页面时,我主要会问:如果用户要认图、推进状态、安排时间,或者找出异常,哪些信息应该先出现?

demo 的代码在 alswl/guides 仓库的 fe-page-guide-antd-demo 目录里。它是一个可以直接运行的配套项目:用 Vite + React 18 + TypeScript 搭起来,页面基础能力由 Refine 承接,界面使用 Ant Design v5 和 Ant Design Pro 的 ProComponents。数据是内存里的 mock,19 种表达骨架各自对应一个路由,打开就能看到具体页面长什么样。

这些页面用的是同一套技术栈,所以对照时更容易看出差别来自信息怎么排,而不是组件库换了。

卡片网格:以识别对象为主

卡片网格

挑素材或模板时,用户通常先看缩略图,确认它是不是自己要找的东西。这个时候图片应该是主要入口。要是还要比较价格、规格等字段,表格可能更省事。

拿模板来说,我一般先认版式,再看名称。把预览缩成表格最左边的一张小图,识别时最重要的内容反而被压掉了。卡片能把预览放在显眼的位置,名称和其他字段围着它排。如果每次选择都要核对一堆参数,那就不能只靠大图。

看板:让阶段一眼可见

看板

看板最重要的是列的含义,以及卡片在列之间怎么移动。用户先看阶段分布,再决定下一步怎么推进。若只是按负责人筛选任务,列表已经够用,没必要硬做成看板。

“待处理、进行中、已完成”这种列名,位置本身就在表达进度。卡片里保留标题、负责人等识别信息就可以。列如果只是换了个名字的筛选条件,用户看起来会很累,操作也未必更快。

日历与排期:把时间占用摊开

日历与排期

日历适合处理真正和时间占用有关的事情,比如排班、会议室预订。要是只是想知道审批先提交还是先通过,时间线就更直接。

预订会议室时,用户要马上知道某个时间段有没有被占用,开始和结束时间不能藏在详情页里。审批记录则不一样,重点是事件先后,按时间线排开即可。

仪表盘:按问题组织指标

仪表盘

仪表盘最容易做成一堆大小相同的卡片。真正该先看的,是指标之间的关系,以及用户从概览进入细节的顺序。

如果所有指标都用一样的卡片摆开,用户还是得自己猜哪些应该一起看。我会先按问题分组:哪些数字用来发现异常,哪些趋势用来解释变化,明细入口放在什么位置。信息多,不代表每一块都要抢注意力。

层级树:保留对象的归属关系

层级树

树适合那些“我得知道它属于哪里”的信息。组织架构、分类目录需要保留父子关系;如果用户经常跨层级查找,再配一个列表或搜索框。

用户沿目录往下找时,树能保留“我现在在哪一层”的感觉。已经知道名称、只想快速定位时,搜索更快。这两种入口可以同时存在,不用让用户为了找一个已知条目,把整棵树一层层展开。

状态墙:先发现异常,再进入细节

状态墙

状态墙先解决一个很现实的问题:异常到底在哪里。监控页面可以密,但不能让颜色、装饰和状态标识互相打架。

用户先找到需要关注的对象,再进去查原因。对象名称和状态要容易辨认,详细日志放到下一步就好。颜色确实方便扫视,但最好再配文字或其他标识,否则用户很难准确说出自己看到的是什么。

参考表:十九种信息呈现方式

下面把其余页面也放在一起,想看细节时可以点击图片打开原图。

表达骨架 表达骨架
分区详情 分区详情 二维对照表 二维对照表
目录与发现 目录与发现 卡片网格 卡片网格
层级树 层级树 关系列表 关系列表
分步向导 分步向导 追踪下钻 追踪下钻
看板 看板 状态墙 状态墙
事件时间线 事件时间线 讨论线程 讨论线程
连续文档 连续文档 并排比较 并排比较
地图与画布 地图与画布 日历排期 日历排期
仪表盘 仪表盘 主从工作台 主从工作台
配置表单 配置表单

直接让 Agent 来使用这套指南

这份指南可以直接放进项目仓库,作为 AI 检查前端页面时的参考。人先从业务出发,想清楚用户来这里要完成什么,再决定信息结构和表达骨架;AI 根据这些判断补方案、找不一致的地方,再把修改做出来。

可以把下面这段直接交给 Agent:

页面组织指南地址:

https://github.com/alswl/guides/blob/master/fe-page-guide-antd.md

先阅读页面组织指南,并检查当前项目的目录结构。根据项目已有的文档约定,把指南复制到合适的位置;如果没有更合适的目录,放在 docs/fe-page-guide-antd.md。复制完成后告诉我实际保存路径,不要只把远程 URL 当作参考。

检查当前项目的任务管理页面。这个页面主要用来比较任务优先级和负责人,同时需要查看任务所处阶段。

结合需求、页面源码和实际页面,给出信息架构和页面表达方式的检查结果与改造建议:列出主信息、关联信息、用户要完成的动作,说明当前表达骨架是否适合、具体问题在哪里、对应的指南依据是什么,以及建议采用什么页面结构。无法从现有资料确定的业务意图请指出来。

先把检查结果和改造方案发给我,等我确认后再完成页面改造。保留现有业务功能、权限和数据交互,沿用项目的组件库。修改后运行项目已有检查,并在页面中验证字段比较、状态切换等操作,给出修改前后的截图和仍需人工判断的问题。

页面和任务描述要换成自己的业务。AI 可以列出几种候选方案,但主骨架和信息顺序不能只看它的输出,业务出发点还得由人来定。

检查报告要落到具体位置。只说“信息层次不清晰”没有多少用处,最好说明哪些信息应该放在一起、现在分散在哪里、准备怎么改。这样才能看出 AI 是不是解决了真正的问题。

把指南放进仓库,只是给了 AI 一份依据。还要告诉它页面入口和主要任务。如果 AI 只能看到源码,就先做源码检查;等页面跑起来,再补截图和实际交互验证。

验收时,我还是会沿着真实任务走一遍:信息是不是更容易找到,下一步操作有没有变清楚,原来的筛选、权限和数据交互是否还正常。

指南与 demo 仓库里放了完整规则和示例。至于页面是否真的好用,还是得回到具体业务里试一遍。


原文链接: 高密度页面怎么组织:一份信息呈现指南 | Log4D

3a1ff193cee606bd1e2ea554a16353ee

欢迎关注我的微信公众号:窥豹

窥豹