25

segmentfault 上有一篇咨询 Markdown 条件判断的问题,我也顺便简单学习了一下 Markdown 的流程图语法。还好,SF 支持流程图,貌似采用的是 flowchart.js

Flowchart.js 仅需几行代码即可在 Web 上完成流程图的构建。可以从文字表述中画出简单的 SVG 流程图,也可以画出彩色的图表。

Draws simple SVG flow chart diagrams from textual representation of the diagram http://flowchart.js.org/

先来看一段入门案例

流程图代码在 Markdown 编辑中应该是下面这样的

clipboard.png

输出结果大致如下:

clipboard.png

在markdown语法中,流程图的画法和代码段类似,也就是说,流程图是写在两个
clipboard.png 之间的。

比如说php代码,会是这样一种格式:

clipboard.png

那么流程图就是这样的:

clipboard.png

语法

流程图的语法大体分为两部分:

  • 前面部分用来定义流程图元素;

  • 后面部分用来连接流程图元素,指定流程图的执行走向。

定义元素阶段的语法是

tag=>type: content:>url

上例中下面部分代码都是定义元素部分


st=>start: Start
e=>end: End
op1=>operation: My Operation
sub1=>subroutine: My Subroutine
cond=>condition: Yes or No?
io=>inputoutput: catch something...

说明

  • tag 是流程图中的标签,在第二段连接元素时会用到。名称可以任意,一般为流程的英文缩写和数字的组合。

  • type 用来确定标签的类型,=>后面表示类型。由于标签的名称可以任意指定,所以要依赖type来确定标签的类型

  • 标签有6种类型:start end operation subroutine condition inputoutput

  • content 是流程图文本框中的描述内容,: 后面表示内容,中英文均可。特别注意,冒号与文本之间一定要有个空格

  • url是一个连接,与框框中的文本相绑定,:>后面就是对应的 url 链接,点击文本时可以通过链接跳转到 url 指定页面

开始

st=>start: 开始

操作

op1=>operation: 操作、执行说明

条件

cond=>condition: 确认?

结束

e=>end: 结束

URL(貌似 SF 的编辑器不支持)

e=>点击本结束跳转:>http://https://segmentfault.com/blog/ingood

连接流程图元素

示例代码后面部分

st->op1->cond
cond(yes)->io->e
cond(no)->sub1(right)->op1

连接流程图元素阶段的语法就简单多了,直接用->来连接两个元素,几点说明如下:

说明

  • 使用 -> 来连接两个元素

  • 对于condition类型,有yesno两个分支,如示例中的cond(yes)cond(no)

  • 每个元素可以制定分支走向,默认向下,也可以用right指向右边,如示例中sub1(right)

更多关于流程图的语法说明,请移步 https://github.com/adrai/flow...

最后给出那个提问的答案示例

clipboard.png

st=>start: 开始
e=>end: 结束:>http://https://segmentfault.com/blog/ingood
c1=>condition: A
c2=>condition: B
c3=>condition: C
io=>inputoutput: D 
st->c1(no)->e
c2(no)->e
c3(no)->e
c1(yes,right)->c2(yes,right)->c3(yes,right)->io
io->e

ingood
708 声望80 粉丝

Keep it simple & stupid.