前言
我是一个 Java 后端程序员,平时要开发各种业务接口。比如一个订单系统的处理流程:校验用户、检查库存、分配仓库、调用支付接口、发货、发送通知……流程一多,思维就乱成一团蜘蛛网。
直到有一天,在逛论坛的时候有人推荐了 Mermaid:一种用纯文本代码绘制流程图的工具。只需在 Markdown 中写几行语法,即可生成漂亮、可维护的图。
第一次试的时候,我用 10 行代码画出了完整的登录流程,并直接嵌到接口文档里,改起来比改代码还快。
Mermaid 是什么
常见类型包括:
1.流程图 2.顺序图 3.类图 4.状态图 5.甘特图 6.实体关系图 7.用户旅程图
使用方法
如果你在支持 Mermaid 的平台(如 GitHub、GitLab、Typora、Obsidian、Hugo 博客等)中写这些代码,它会自动渲染成图
Halo的话需要在应用商店安装
https://www.halo.run/store/apps/app-ahBRi 这个插件!
flowchart LR
    Request[请求到达] --> AuthCheck[校验签名]
    AuthCheck -->|合法| LoadUser[读取用户信息]
    AuthCheck -->|非法| Error[返回 401]
    LoadUser --> CheckPwd[校验密码]
    CheckPwd -->|正确| Success[生成 Token]
    CheckPwd -->|错误| Error
基础用法
流程图方向
Mermaid 支持几种布局方向:
TB(TopBottom):从上到下BT(BottomTop):从下到上LR(LeftRight):从左到右RL(RightLeft):从右到左
如:
flowchart TB
    A --> B
    B --> C节点类型
方框:
A[文本]圆角框:
A(文本)圆形:
A((文本))菱形(条件判断):
A{文本}子程序:
A[[文本]]
连线样式
flowchart LR
    A --> B   %% 直线箭头
    B --- C   %% 无箭头的连线
    C -->|条件| D  %% 带条件标签-->:有箭头---:无箭头-.->:虚线箭头==>:加粗箭头
分组
可以用 subgraph 把节点分组:
flowchart TB
    subgraph 用户层
        A[浏览器] --> B[控制器]
    end
    subgraph 服务层
        B --> C[服务类]
    end高级用法
顺序图
用于表示调用顺序:
sequenceDiagram
    participant U as 用户
    participant B as 浏览器
    participant S as 服务端
    U->>B: 输入账号密码
    B->>S: 发送登录请求
    S->>S: 校验
    S-->>B: Token
    B-->>U: 登录成功类图
适合 Java 后端表示类之间的关系:
classDiagram
    class Controller {
        +String handleRequest()
    }
    class Service {
        +boolean process()
    }
    class Repository {
        +Entity findById(int id)
    }
    Controller --> Service
    Service --> Repository状态图
适合表示状态机,例如订单状态:
stateDiagram-v2
    [*] --> 待支付
    待支付 --> 已支付: 用户付款
    已支付 --> 已发货: 仓库发货
    已发货 --> 已完成: 用户签收甘特图
适合项目进度管理:
gantt
    title 开发任务
    dateFormat  YYYY-MM-DD
    section 登录模块
    开发: a1, 2024-07-01, 3d
    测试: after a1, 2d
    section 订单模块
    开发: a2, 2024-07-04, 4d
    测试: after a2, 3d完整案例
flowchart LR
    subgraph Controller 层
        R[接收 HTTP 请求] --> V[参数校验]
    end
    subgraph Service 层
        V --> B[业务处理]
        B --> CallMQ[发送 MQ 消息]
        B --> Repo[数据持久化]
    end
    subgraph 外部系统
        CallMQ --> Inv[库存服务]
        Repo --> MySQL[(MySQL 数据库)]
    end只要你能写 Markdown,就能用 Mermaid,让工作更高效、文档更漂亮。
现在不用刻意记这些,我们只需要知道大概语法,提供思路给 AI,它也可以帮我们一键生成,这也是我认为比思维导图好的一点!
                        
                        
        
              
    
默认评论
Halo系统提供的评论