从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • RSS
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 📖 读书

    • 读书工具
    • 读书笔记
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • RSS
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 📖 读书

    • 读书工具
    • 读书笔记
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • Windows

  • 手机

  • 笔记软件

  • 输入法

  • 浏览器

  • Office

  • 图片类

  • 效率类

  • RSS

  • 码字工具

    • LaTex

    • Markdown

      • 什么是 Markdown
      • Markdown 语法
      • Markdown 排版规范
      • Markdown 编辑器推荐
      • 深入了解下 Markdown
      • Markdown 与数学公式
      • 使用 Markdown 画图
      • 使用 Markdown 画流程图
      • 使用 Markdown 画时序图
        • 快速入门
        • 参与者
        • 消息
        • 激活框
        • 注解
        • 循环(loop)
        • 选择(alt)
        • 可选(opt)
        • 并行
        • 最后
        • 参考
      • 使用 Markdown 画甘特图
      • Markdown 和其他格式的相互转换
      • 其他 Markdown 技巧
      • Typora 相关技巧
      • Typora 必备插件!
  • 各大平台

  • 效率软件
  • 码字工具
  • Markdown
2024-07-24
目录

使用 Markdown 画时序图

# 80.使用 Markdown 画时序图

时序图是一种表现交互过程的图示,主要展示各个参与者之间是如何交互的,以及交互的顺序是怎样的。

# 快速入门

听不太懂?没关系,看个例子,下图是小程序登陆过程中,小程序、服务器、微信服务器三者交互的时序图:

而画这幅图只用了很少并且很简单的代码:

sequenceDiagram
    小程序 ->> 小程序 : wx.login()获取code
    小程序 ->> + 服务器 : wx.request()发送code
    服务器 ->> + 微信服务器 : code+appid+secret
    微信服务器 -->> - 服务器 : openid
    服务器 ->> 服务器 : 根据openid确定用户并生成token
    服务器 -->> - 小程序 : token
1
2
3
4
5
6
7

接下来讲讲一些术语和概念。

# 参与者

参与者,简单来说就是参与交互的事务,例如人,系统,服务器等等。

严格来说,参与者可以分为角色和类对象,这涉及到编程相关的内容了,因此我们可以暂时忽略这个区别。

语法:

sequenceDiagram
    participant 客户端
    participant 服务器
1
2
3

效果:

说明:

  • sequenceDiagram 为每幅时序图的固定开头(也就是上一篇说过的,关键字,不能省略)
  • participant <参与者名称>:声明参与者,语句次序即为参与者横向排列次序(例如本例中就是“客户端”在左,后面则跟着“服务器”)
  • 从上到下的线段表示时间的流逝,也叫时间线

# 消息

既然是交互,就得相互发送消息,这里是用单向箭头来表示。

注意:

  • 实线代表主动发出消息。
  • 虚线代表响应。
  • 末尾带「X」代表异步消息,无需等待回应。也就是发出消息后,不管接受者是否收到。

实例:

sequenceDiagram
    participant 老板L
    participant 员工A

    老板L ->> 员工A : “在这里我们是兄弟!”
    老板L -x 员工A : 画个饼
    员工A -->> 老板L : 怯怯地鼓掌
1
2
3
4
5
6
7

效果:

说明:

  • 消息语句格式为:<参与者> <箭头> <参与者> : <描述文本>。

  • <箭头> 的写法有:

    • ->>:显示为实线箭头(主动发出消息)
    • -->>:显示为虚线箭头(响应)
    • -x:显示为末尾带「X」的实线箭头(异步消息)
  • 本例中省略了 participant <参与者名称>。省略后参与者横向排列的次序,由消息语句中参与者出现的次序决定。

# 激活框

一般来说,收到消息后,参与者得用一段的时间才能做出回应(就好比人之间的对话,一般要时间去想如何回应)。

在时序图上,我们可以标记一段时间,表示对消息进行处理的时间间隔。

示例:

sequenceDiagram
    老板M ->> + 员工B : “不仅996,还要669!”
    员工B -->> - 老板M : 怯怯地鼓掌

    老板M ->> + 员工B : “悔创本司!”
    员工B -->> - 老板M : 怯怯地鼓掌
1
2
3
4
5
6

效果:

说明:体会箭头符号后的 + 和 - 的使用方法和效果,它们相当于激活框的开关

# 注解

示例:

sequenceDiagram
    Note left of 老板L : 对脸不感兴趣
    Note right of 老板M : 对钱不感兴趣
    Note over 老板L,老板M : 对996感兴趣
1
2
3
4

效果:

# 循环(loop)

在条件满足时,重复发出消息序列。

示例:

sequenceDiagram
    网友 ->> + X宝 : 网购钟意的商品
    X宝 -->> - 网友 : 下单成功

    loop 一天七次
        网友 ->> + X宝 : 查看配送进度
        X宝 -->> - 网友 : 配送中
    end
1
2
3
4
5
6
7
8

效果:

# 选择(alt)

在多个条件中作出判断,每个条件将对应不同的消息序列。

示例:

sequenceDiagram  
    土豪 ->> 取款机 : 查询余额
    取款机 -->> 土豪 : 余额

    alt 余额 > 5000
        土豪 ->> 取款机 : 取上限值 5000 块
    else 100 < 余额 < 5000
        土豪 ->> 取款机 : 有多少取多少
    else 余额 < 100
        土豪 ->> 取款机 : 退卡
    end

    取款机 -->> 土豪 : 退卡
1
2
3
4
5
6
7
8
9
10
11
12
13

效果:

# 可选(opt)

在某条件满足时执行消息序列,否则不执行。

示例:

sequenceDiagram
    老板们 ->> 员工们 : 开始实行996

    opt 永不可能
        员工们 -->> 老板们 : 拒绝
    end
1
2
3
4
5
6

效果:

# 并行

将消息序列分成多个片段,这些片段并行执行。

示例:

sequenceDiagram
    老板C ->> 员工C : 开始实行996

    par 并行
        员工C ->> 员工C : 刷微博
    and
        员工C ->> 员工C : 工作
    and
        员工C ->> 员工C : 刷朋友圈
    end

    员工C -->> 老板C : 9点下班
1
2
3
4
5
6
7
8
9
10
11
12

效果:

# 最后

用纯文本画时序图很简单,本文介绍的这些语法基本上够用了,等到实际要用的时候再来学习也不迟。

想要深入的话不妨看看官网文档。

# 参考

Markdown 高级玩法:用代码画时序图 (opens new window)

上次更新: 2025/3/11 11:14:10
使用 Markdown 画流程图
使用 Markdown 画甘特图

← 使用 Markdown 画流程图 使用 Markdown 画甘特图→

最近更新
01
吐槽一下《僵尸校园》
05-15
02
2025 年 4 月记
04-30
03
山西大同 “订婚强奸案” 将会给整个社会带来的影响有多严重? - 知乎 转载
04-26
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式