在博客文章中使用mermaid 定义流程图,序列图,甘特图
概述
Mermaid(美人鱼)是一套markdown语法规范,用来在markdown文档中定义图形,包括流程图、序列图、甘特图等等。
它的官方网站是 https://mermaid-js.github.io/mermaid/#/
另外有一个在线的测试网站 https://mermaid.live
强烈建议用这个来编写,因为有语法智能提示,还能实时看到效果。写好后,再复制到你的文档里面来,mermaid 还提供了可以将图形文本生成网页地址,或者图形链接的功能,可以很方便地进行分享
如何使用
博客园默认就支持mermaid,它的语法很简单,下面是一个简单的例子
```mermaid
graph LR;
A[Wiki supports Mermaid] --> B[Visit https://mermaidjs.github.io/ for Mermaid syntax];
```
在文章中呈现的样子如下
A[Wiki supports Mermaid] --> B[Visit https://mermaidjs.github.io/ for Mermaid syntax];
流程图(Flowchart)
用来描述一个系统流程,通常在需求分析阶段很有用
基本用法
graph LR
A(员工发起审批)--> B{经理是否审批}
B --> |同意| C[财务报销]
B --> |拒绝| A
C --> E(结束)
A(员工发起审批)--> B{经理是否审批}
B --> |同意| C[财务报销]
B --> |拒绝| A
C --> E(结束)
语法解释
- graph 定义了一个流程图
- LR 表示从左(LEFT)至右(RIGHT),水平流程图。如果不写,则是从上至下(TD:TOP DOWN, 或TB:TOP BUTTOM)
- A,B,C,D,E 这些都是节点的代号,可以用任意字符,通常用简单的英文字母即可。mermaid内部会记录和复用这些节点代号,类似于变量的机制
- --> 表示连接线,包括方向。在箭头后面跟着的 |文字| 是定义要显示在连接线上的文字
还支持 --- , -- 文字 --> 等组合用法
- 代号后面的文本,用来作为节点的显示文本(如果提供了的话)。
- () 表示一个带有圆角的矩形,{}表示一个判断条件,[] 表示一个没有圆角的矩形
还支持([]), [[]],(()),[()],{{}},{//},{\},((())) 等多种组合用法
序列图(Sequence)
序列图是一种交互图,它显示了进程如何相互作用以及以何种顺序运行。
基本用法
sequenceDiagram
actor user as 小明
participant client as Outlook 客户端
participant website as Azure Blob storage
participant aad as Azure Active Directory
participant sbux as Starbucks backend service
user ->> client : 打开星巴克插件
client->>+ website : 访问网页
website-->>- user : 要求登录
user->>+ aad : 身份验证
aad-->>- website : 授权成功
user->>+ website : 门店查询
website-->> sbux : 接口调用
sbux -->> website : 返回门店列表
website -->> user : 返回
actor user as 小明
participant client as Outlook 客户端
participant website as Azure Blob storage
participant aad as Azure Active Directory
participant sbux as Starbucks backend service
user ->> client : 打开星巴克插件
client->>+ website : 访问网页
website-->>- user : 要求登录
user->>+ aad : 身份验证
aad-->>- website : 授权成功
user->>+ website : 门店查询
website-->> sbux : 接口调用
sbux -->> website : 返回门店列表
website -->> user : 返回
语法解释
- sequenceDiagram 定义这是一个序列图
- 顶部的参与者定义,并不是必须的,但用这种语法定义更加清晰
actor是指人,participant一般是指系统, 用as语法可以重命名 - 参与者之间连接符, 常见的有
->,-->,->>,-->>,-x,--x,-),--), 两个短线表示虚线,一个短线表示实线 - 在箭头的右侧的
+,-指的是UML中的activate的意思 - 还支持并行
par语法,循环loop语法等,可以参考官方文档
甘特图(Gantt)
甘特图用来表示项目计划或进度
基本用法
gantt
title 项目进度
dateFormat YYYY-MM-DD
axisFormat %m-%d
excludes sunday,monday,tuesday,friday,2014-03-01
section 第一阶段
需求分析 :crit, a1, 2014-01-01, 30d
设计评审 :after a1, 20d
section 第二阶段
第一批测试 :done, 2014-01-12 , 12d
第二批测试 :24d
客户验收 :milestone,2h
title 项目进度
dateFormat YYYY-MM-DD
axisFormat %m-%d
excludes sunday,monday,tuesday,friday,2014-03-01
section 第一阶段
需求分析 :crit, a1, 2014-01-01, 30d
设计评审 :after a1, 20d
section 第二阶段
第一批测试 :done, 2014-01-12 , 12d
第二批测试 :24d
客户验收 :milestone,2h
语法解释
- gantt 表示这是一个甘特图
- title 定义甘特图的标题
- dateFormat 定义甘特图中日期显示的格式,更多格式可以参考 https://mermaid-js.github.io/mermaid/#/gantt?id=input-date-format
- section 定义一个一个的区域,可以包含一个或多个任务
- 任务定义语法:
任务名称:别名,开始日期,天数 - 状态的修饰语法
active(表示还没有完成,会显示为蓝色),done(表示已完成, 会显示为灰色),crit(表示关键任务,会显示为红色) - 任务时长:d(天),w(周),h(小时),m(分钟)
- 任务可以有一个别名,例如上面的
a1,然后在其他任务中可以引用依赖,例如after a1 - 如果某个任务没有写开始日期,默认就是在上一个任务之后
excludes是指要排除哪些日期,可以写具体的日期,也可以写weekends(周末),或具体的工作日,如sunday,monday这样的语法,可以写多种的组合milestone表示里程碑
在博客文章中使用mermaid 定义流程图,序列图,甘特图的更多相关文章
- Flask——向博客文章中添加图片
未添加图片样式 添加图片设置: 1.允许渲染img标签 在数据库文章模型allowed_tags中添加img 2.给clean函数加个参数attributes=attrs, attrs = { '*' ...
- WordPress 博客文章中google adsense广告展示方法之一
http://log.medcl.net/item/2011/08/diving-into-elasticsearch-4-installation-and-configuration/ 看到这个网站 ...
- 年度十佳 DevOps 博客文章(前篇)
如果说 15 年你还没有将 DevOps 真正应用起来,16 年再不实践也未免太落伍了.国内 ITOM 领军企业 OneAPM 工程师为您翻译整理了,2015 年十佳 DevOps 文章,究竟是不是深 ...
- VM 映像 PowerShell 教学系列博客文章
编辑人员注释:本文章是与Microsoft Azure工程的项目经理Kay Singh共同撰写的 正如我在第一篇博客文章中所承诺的,我又回来了,为大家分步介绍如何在PowerShell中使用VM ...
- SQL Sever 博客文章目录(2016-07-06更新)
SQL Server方面的博客文章也陆陆续续的写了不少了,顺便也将这些知识点整理.归纳一下下.方便自己和他人查看. MS SQL 数据类型 三大数据库对比研究系列--数据类型 MS SQL 表和视图 ...
- 年度十佳 DevOps 博客文章(后篇)
如果说 15 年你还没有将 DevOps 真正应用起来,16 年再不实践也未免太落伍了.在上篇文章中我们了解到 15 年十佳 DevOps 博客文章的第 6-10 名,有没有哪一篇抓住了您的眼球,让您 ...
- Flask 学习 十 博客文章
提交和显示博客文章 app/models.py 文章模型 class Post(db.Model): __tablename__ = 'posts' id = db.Column(db.Integer ...
- 一文搞定scrapy爬取众多知名技术博客文章保存到本地数据库,包含:cnblog、csdn、51cto、itpub、jobbole、oschina等
本文旨在通过爬取一系列博客网站技术文章的实践,介绍一下scrapy这个python语言中强大的整站爬虫框架的使用.各位童鞋可不要用来干坏事哦,这些技术博客平台也是为了让我们大家更方便的交流.学习.提高 ...
- HelloDjango 第 08 篇:开发博客文章详情页
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 首页展示的是所有文章的列表,当用户看到感兴趣的文章时,他点击文章的标题或者继续阅读的按 ...
随机推荐
- 构造器注入和 setter 依赖注入,那种方式更好?
每种方式都有它的缺点和优点.构造器注入保证所有的注入都被初始化,但是 setter 注入提供更好的灵活性来设置可选依赖.如果使用 XML 来描述依赖, Setter 注入的可读写会更强.经验法则是强制 ...
- npm run start 后台运行
yum provides */nohup nohup npm start & 原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用. 停止程序 ps -ef ...
- 若没有任何实例包含Class Body 则enum被隐式声明为final
本文参考 今天在Java Language Specification上偶然看到一条关于枚举的语法特点说明 An enum declaration is implicitly final unless ...
- vulnhub 靶机 Kioptrix Level 1渗透笔记
靶机下载地址:https://www.vulnhub.com/entry/kioptrix-level-1-1,22/ kali ip 信息收集 先使用nmap收集目标的ip地址 nmap -sP 1 ...
- Mac 安装WordPress
Mac 安装WordPress 一.环境要求 PHP 5.2.4或更新版本 MySQL 5.0或更新版本 WebServer(可以选择Apache.nginx等支持PHP的,这里我选择Apache) ...
- 微信小程序要求HTTPS,如何选择SSL证书?
为了保护小程序应用安全,微信官方的需求文档要求,每个微信小程序必须事先设置一个通讯域名,并通过HTTPS请求进行网络通信,不满足条件的域名和协议无法请求.因此开发者应先准备好配置好HTTPS证书的域名 ...
- 原生js实现架子鼓特效
这是代码完成的效果,按下abcd会出现对应的架子鼓音乐的效果. 简单的介绍下代码思路,html和css部分就不多说了. 重要的是js部分. 大致是这样的, 首先获取到所有的按钮为一个数组,然后遍历整个 ...
- 简单vue项目脚手架
简单vue项目脚手架 github地址 使用技术栈 webpack(^2.6.1) webpack-dev-server(^2.4.5) vue(^2.3.3) vuex(^2.3.1) vue-ro ...
- SQL之总结(二)
4.关于取两个日期之间的年份: ceil(MONTHS_BETWEEN(sysdate, c.sendtime)/12) workTime ceil(n) 取大于等于n的最小整数 floor(n) 取 ...
- MySQL中 tinyint、bigint、bit、text、decimal、year、date、time、datetime、timestamp等对应Java中什么类型
MySQL中字段名称对应的Java类型 MySQL字段名 Java数据类型 varchar String text String bigint Long(已经有长度了,在mysql建表中的length ...