跳到正文
misoto22 design

展示

Diagram 示意图

一张流程图或架构图,用系统自己的零件画出来。

什么时候用它

在页面里画结构,而不是在终端里。嵌套表示包含,箭头表示相邻两步之间的顺序——需要任意连线的图想要的是一张画,不是这个。

示例

default

EdgeCDN + WAF
Cached for 60s
Applicationone process
Router
Handlerswhere the work is
Serialisers
Postgresprimary
One request, from the edge to the row it reads.

说明

一张流程图或架构图,用系统自己的零件画出来。

它取代的第一种做法,是用制表符画的代码块——┌──────┬──────┐——那是一张用“为代码挑的字体”渲染出来的画。它会继承代码块的边框和滚动条,于是一张图读起来像终端输出;它没法折行,所以在手机上要么溢出要么缩到看不清;框线是文字,读屏软件会把那些线一根根念出来;而且这一切都不跟随主题。

第二种做法是引一个绘图库:几百 KB 的布局引擎,水合之后才渲染,而且用它自己那套配色画。这两者都不是:细线框走圆角刻度、等宽标签、辅助信息用弱一档的墨色——所以一张图属于它所在的页面。它是标记,所以服务端就能渲染。

嵌套即包含,这也正是大多数架构图真正在描述的事:这个在那个里面,这两个并排。箭头表示相邻兄弟节点之间的顺序,而不是任意连线——需要任意连线的图想要的是一张画,这个组件不会假装自己能画。

它接受一份 spec 而不是标记,所以文章里的 ```diagram 代码块和页面上手写的图是同一个渲染器、同一种样子——画错了,改数据就行。

属性

Diagram props
属性类型默认值说明
spec必填DiagramSpec
classNamestring

无障碍

  • 一个 role="group" 的 <figure>,由 caption 命名,所以整张图对读者是一个可以整体跳过的东西。
  • 箭头是 aria-hidden:辅助技术本来就按文档顺序读节点,用不上一个指向下一个的字形。
  • 服务端渲染出来的标记,不是 canvas——每一个标签都是读屏和搜索引擎读得到的真文字。