markdown 流程图_Markdown 进阶技能:用代码画流程图(编程零基础也适用)

53094a6dcccadc779c3b335a941b8bae.png

这篇文章主要介绍

  • 流程图基础
  • 以写代码的方式画流程图

相比于使用画图工具拖拽画图,用代码画图有什么好处?

  • 首先,这种方式非常轻便,无需安装复杂的画图应用。Typora 等多种 Markdown 编辑器自带有画图扩展(这也是 Markdown 能画图的原因,因为用到了扩展)
  • 其次,拖拽画图时需要考虑图形尺寸和对齐问题,而代码画图不需要考虑这些,一切均自动调整
  • 另外,想象下你在写文档时,随手一段代码就插入了一幅流程图,这多么酷炫!

虽说要使用代码,但其实这些代码非常简单,编程零基础也可以轻松学会,只要运用一些联想记忆即可。


一、流程图基础

考虑到有些读者可能不了解流程图,为此这里先作一些简单介绍,如果你熟悉流程图可以跳过这段内容直接看下一小节。

流程图,顾名思义,就是表示一个事件或活动的流程的图示。

流程图常用符号及含义

流程图的符号有很多,但常用的也就几个。

  1. 圆角矩形:表示开始和结束

e0104432169cc0dabe32dd5cbe644ce3.png

2. 矩形:表示过程,也就是整个流程中的一个环节

319bc8e7a8a4d632f806a55d306f8dfe.png

3. 单向箭头线段:表示流程进行方向

102c89e2973e2b7301ff29d33101e3a0.png

4. 菱形:表示判断、决策

a92209cbe59c11c014f74163c49614ea.png

5. 圆形:表示连接。为避免流程过长或有交叉,可将流程切开,圆形即相当于切口处的连接头(成对出现)

17dc7dbbb893bbdf00a50dc4f138b863.png

6. 另外还有嵌入在以上符号中的描述文本

图示布局方向

在画流程图时,最常用的布局方向是

  • 从上向下
  • 从左向右

当然也允许从下向上画、从右向左画,但是这两种很少见。


二、代码画图

工具

君欲善其事,必先利其器。想要用代码画图,就得有支持这种方式的画图工具。这里介绍两款工具:

1) 免费 Markdown 编辑器 Typora,非常好用且美观。其自带 mermaid 画图扩展。

在用 Typora 编写 Markdown 文本时,插入这样一个代码块:

```mermaid……流程图代码……
```

其中流程图的代码便会自动被 mermaid 解析和渲染。

5355eda57e59bcdf0ddcd8cf3c894826.png
https://www.zhihu.com/video/1123992275965067264

这样的使用方式很简单,其它的能支持 mermaid 的编辑器也可以这样来用,比如说印X笔记。

2) 如果你不想用 Markdown,可以选择网页版 mermaid 编辑器,免费且无需注册:

Online FlowChart & Diagrams Editor​dwz.cn

利器有了,现在来善其事。

起始代码

每次作图时,代码以「graph <布局方向>」开头,如:

graph TB......
TB(Top Bottom)表示从上向下布局,另外三种是
BT
LR(Left Right)
RL

节点的画法

接下来,来画之前介绍过的四种节点(圆形、矩形、菱形、圆形)。四种节点对应四行代码,请仔细观察代码差异,并与对应的节点相比较。

graph TBA(开始)B[打开冰箱门]C{"冰箱小不小?"}D((连接))

9e6466beec7bfa429260dabf0b891c1d.png

看出玄机了吗?其实很简单,就是

  • 不同种类的括号对应不同的节点图形
  • 括号中的文字就是显示在节点中的描述
  • A B C D 这些字符是为节点取的名字,这个名字可以在之后反复利用(在编程里这相当于定义变量)

线段的画法

前面是节点的画法,再来看下线段的画法。线段用于连接节点,所以请结合刚才所学的节点一同来看:

graph TBA[把大象放进去] --> B{"冰箱小不小?"}B -->|不小| C[把冰箱门关上]B -->|小| D[换个大冰箱]

bb57f925301ed97ee04bc5e3e5d49aa3.png

是不是又发现了玄机!

上述 -->是带箭头线段,-->|不小| 是加了描述文字的带箭头线段。它们都位于两个节点之间。

好了,要学的内容就是这些,意不意外!东西不多也不复杂,只要根据图案联想记忆即可。稍加练习后便能运用自如。

额外提示

  • 上一个代码示例中,B{"冰箱小不小?"} 这里的描述文字加了引号,是因为其中包含特殊字符(问号),用引号包裹防止出错
  • 为节点取名为 A B C 不太合适,如果节点很多时往往容易混淆,不方便后续使用和阅读(编程时命名的重要性)。建议起有意义的名字
  • 除上述带箭头线段 --> 外,还有带箭头虚线线段 -.->、 带箭头加粗线段 ==>、不带箭头线段 ---

三、完整示例

完成了上面的教程后,我们再来看个完整例子体会下:

graph TBStart(开始) --> Open[打开冰箱门]Open --> Put[把大象放进去]Put[把大象放进去] --> IsFit{"冰箱小不小?"}IsFit -->|不小| Close[把冰箱门关上]Close --> End(结束)IsFit -->|小| Change[换个大冰箱]Change --> Open

e7df52027f3028528ce02c0530199a0f.png

花式用法

当然节点和线段的表现力可以很丰富,不仅限于用于流程图,你也可以借助它们来表现其它内容。如下面是火锅冒菜麻辣烫的关系图!

b37f3977404248aa509d22ab205e4f83.png

38306aef18d4c82dfdef949b23448cab.png
欢迎阅读作者其它文章

作者相关阅读:

《轻松上手写作利器 Markdown:从此文章排版无烦恼》

《会用 Markdown 还不够,还得知道排版规范》

《Markdown 高级玩法:用代码画时序图》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java jtree_Java JTree

Java JTree1 Java JTree的介绍JTree类用于显示树结构数据或层次结构数据。JTree是一个复杂的组件。它的最顶部有一个“根节点”&#xff0c;它是树中所有节点的父节点。它继承了JComponent类。2 Java JTree的声明我们来看一下javax.swing.JTree类的声明。public class JTree ex…

akka和rabbitmq_Akka Notes –演员记录和测试

akka和rabbitmq在前两部分&#xff08; 一 &#xff0c; 二 &#xff09;中&#xff0c;我们简要讨论了Actor以及消息传递的工作方式。 在这一部分中&#xff0c;让我们看一下如何修复并记录我们的TeacherActor 。 回顾 这就是我们上一部分中的Actor的样子&#xff1a; class…

完数c++语言程序_C语言经典100题(19)

1上期答案揭晓首先给大家看看上一篇文章C语言经典100题(18)中第三部分编程题的答案&#xff1a;#includeint main(){ int s0,a,n,t; printf("请输入 a 和 n&#xff1a;\n"); scanf("%d%d",&a,&n); ta; while(n>0) { …

古巴:为生产做准备

“它可以在我的本地机器上运行&#xff01;” 如今&#xff0c;这听起来像模因&#xff0c;但仍然存在“开发环境与生产环境”的问题。 作为开发人员&#xff0c;您应始终牢记&#xff0c;您的应用程序有一天将在生产环境中开始运行。 在本文中&#xff0c;我们将讨论一些特定于…

hibernate脏数据_Hibernate脏检查的剖析

hibernate脏数据介绍 持久性上下文使实体状态转换入队 &#xff0c;该实体状态转换在刷新后转换为数据库语句。 对于托管实体&#xff0c;Hibernate可以代表我们自动检测传入的更改并安排SQL UPDATE。 这种机制称为自动脏检查 。 默认的脏检查策略 默认情况下&#xff0c;Hibe…

php组成,php接口有几部分组成?

程序接口&#xff0c;由一套陈述、功能、选项、其它表达程序结构的形式、以及程序师使用的程序或者程序语言提供的数据组成PHP接口(interface)的特点1、接口的方法必须是公开的。2、接口的方法默认是抽象的&#xff0c;所以不在方法名前面加abstract。3、接口可以定义常量&…

java 解析日期格式_日期/时间格式/解析,Java 8样式

java 解析日期格式自Java 几乎 开始以来&#xff0c;Java开发人员就通过java.util.Date类&#xff08;自JDK 1.0起&#xff09;和java.util.Calendar类&#xff08;自JDK 1.1起 &#xff09;来处理日期和时间。 在这段时间内&#xff0c;成千上万&#xff08;甚至数百万&#x…

php第三方登录代码,thinkPHP5项目中实现QQ第三方登录功能

本文实例讲述了thinkPHP5项目中实现QQ第三方登录功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;最近用thinkPHP 5框架做了一个婚纱店的项目&#xff0c;在开发过程中需要用到第三方登录&#xff0c;腾讯官方给的案例是几个文件相互包含实现的&#xff0c;放到tp5…

mac 显示隐藏文件_如何在Mac上显示隐藏文件?苹果mac显示隐藏文件夹方法

与任何操作系统一样&#xff0c;macOS会将重要文件隐藏起来&#xff0c;以防止意外删除它们并因此而损坏系统。但是&#xff0c;在某些情况下&#xff0c;您可能需要在Mac上显示隐藏文件&#xff0c;例如&#xff0c;浏览“ 库”文件夹并清除旧日志&#xff0c;缓存或其他垃圾文…

分布式虚拟跟踪

跟踪提供了对系统的可见性&#xff0c;使开发人员和操作人员可以在运行时观察应用程序。 当系统不断增长并与更多微服务进行交互时&#xff0c;跟踪变得非常有价值。 在这样的环境中&#xff0c;这些痕迹非常棒&#xff0c;可以定位导致性能下降的故障和瓶颈。 在这篇文章中&a…

php 删除数组的空元素,php删除数组空元素的方法_后端开发

php如何实现自动跳转_后端开发php实现自动跳转的方法&#xff1a;1、通过php内置函数“header”&#xff0c;将http响应头中的“Location”设置为要跳转的URL即可&#xff1b;2、可以在javascript代码中将“window.location.href”指向要跳转的URL即可。php删除数组空元素的方法…

map for循环_JavaScript 用 for 循环太 low?你是不是有什么误解

天要吐槽下&#xff0c;我时不时地看到有些文章说“循环语句不好&#xff0c;你应该用 filter&#xff0c;map 和 reduce ”——每次看到有文章鼓吹&#xff0c;所有需要循环的场景一律用这几个函数式方法&#xff0c;我都恨得牙痒痒。没错&#xff0c;这些函数式方法确实有它们…

简单工程验收单表格_中铁超大型工程项目-123个精细化管理手册配套表格附件,超全...

中铁超大型工程项目-123个精细化管理手册配套表格附件&#xff0c;超全&#xff01;什么是项目精细化&#xff1f;答&#xff1a;工程项目精细化管理是一个系统的管理体系&#xff0c;包含一系列管理制度和办法&#xff0c;除了《工程项目精细化管理办法》这个纲领性文件外&…

判断unsigned long long乘法溢出_信息安全课程17:缓冲区溢出2

在之前所讲述的内容中&#xff0c;都是我们在自己的程序中自行修改的&#xff1b;正常情况下&#xff0c;没有程序员会在自己的代码中这样写——那有没有办法攻击别人正常的程序呢&#xff1f;攻击者怎么样能够影响到不是自己的程序的返回地址呢&#xff1f;以及怎么样通过攻击…

java 保垒机telnet,开源堡垒机系统Teleport

一. teleport简介Teleport是一款简单易用的堡垒机系统&#xff0c;具有小巧、易用的特点&#xff0c;支持 RDP/SSH/SFTP/Telnet 协议的远程连接和审计管理。Teleport由两大部分构成&#xff1a;跳板核心服务WEB操作界面官网地址: https://tp4a.com/ 官网文档: https://docs.…

php背景图片随页面大小改变,css背景图根据屏幕大小自动缩放

css背景图根据屏幕大小自动缩放代码&#xff1a;html,body{margin:0px;padding:0px;}#background { position: fixed;top: 0;left: 0;width: 100%;height: 100%;overflow: hidden;background-color: #211f1f; display:none\8;}#background .bg-photo {position: absolute;top: …

forever不重启 node_运维监控Prometheus,部署安全的node_exporter监控主机

简介prometheus监控系统的时候&#xff0c;是使用pull的方式来获取监控数据&#xff0c;需要被监控端监听对应的端口&#xff0c;prometheus从这些端口服务中拉取对应的数据。node_exporter安全性讨论node_exporter是收集操作系统的指标的一个程序。例如CPU&#xff0c;内存&am…

netbeans ide_IDE:5个最喜欢的NetBeans功能

netbeans ide愉快的发展……。 NetBeans具有许多有趣的功能 &#xff0c;这些功能使开发非常容易&#xff0c;只需很少的步骤&#xff0c;并且可以在非常快速地将产品推向市场的过程中创造出非常高效的环境 。 将我的谈话仅限于五个功能非常困难&#xff0c;而此IDE具有大量有…

那是两个小时我不会回来

正如我之前关于linting主题所说的 &#xff0c;花时间修改代码的好处很有限&#xff0c;因为自动工具告诉您这样做。 更糟糕的是&#xff0c;这些工具并非万无一失。 例如&#xff0c;我们一直在针对完美无害的try-with-resources构造周围的SpotBugs警告中添加排除项&#xff…

oracle 查询不同编号的时间最小记录_投稿 | ORACLE amp; PostgreSql 利用伪列删除完全重复的两行...

作者&#xff1a;缪晓丽DBA、数据库爱好者、从业10年。对 DB2、PostgreSQL、Oracle 均有较长的运维经验。本次演示的 test 表如下&#xff1a;01Oracle 的 rowidSQL 语句&#xff1a;DELETE FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY id ORDER BY id) AS rn, id, name…