Як написати блок-схему Mermaid:напрямок, вузли та стрілки.

Блок-схема Mermaid — це текст у блоці коду: ви називаєте вузли, з'єднуєте їх стрілками, і діаграма малюється сама. Ось синтаксис із прикладами для копіювання.

macOS 14 або новіша. Читати можна безкоштовно; редагування й рев'ю оплачуються один раз.

Коротко

Почніть блок коду з позначкою mermaid, напишіть flowchart і напрямок, потім перелічіть зв'язки між вузлами. TD малює згори вниз, LR — зліва направо. Прямокутник — це [text], рішення — {text}, а --> — стрілка.

```mermaid
flowchart LR
    A[Write spec] --> B{Approved?}
    B -->|Yes| C[Build]
    B -->|No| A
```

·

Напрямок

Перший рядок називає тип діаграми й напрямок. Працюють і flowchart, і старіше graph.

  • TD або TB: згори вниз
  • BT: знизу вгору
  • LR: зліва направо
  • RL: справа наліво

Обирайте LR для короткого процесу, що вміщується в ширину сторінки, і TD для довшого.

Форми вузлів

Вузол — це ідентифікатор, після якого в дужках за бажання йде текст. Форму обирають дужки:

flowchart LR
    a[Rectangle]
    b(Rounded)
    c([Stadium])
    d[[Subroutine]]
    e[(Database)]
    f((Circle))
    g{Decision}
    h{{Hexagon}}
    i[/Parallelogram/]

Вузол без дужок просто показує свій ідентифікатор. Пізніше на вузол можна послатися лише за ідентифікатором, тому форма й текст пишуться один раз.

Підграфи

Підграф групує вузли в блок із підписом. Він починається зі слова subgraph і закінчується словом end:

flowchart TD
    subgraph client [Client]
        A[Browser] --> B[App]
    end
    subgraph server [Server]
        C[API] --> D[(Database)]
    end
    B --> C

Слово в дужках — це назва, а слово перед ним — ідентифікатор, на який можна посилатися. Усередині підграфа може бути свій рядок direction LR, але напрямок ігнорується, якщо вузол усередині пов'язаний із чимось ззовні.

Повний приклад

Зберімо все разом: невеликий процес випуску релізу з рішенням, поверненням назад і згрупованим кроком:

flowchart TD
    A([Start]) --> B[Write the change]
    B --> C{Tests pass?}
    C -->|No| B
    C -->|Yes| D[Open a pull request]
    subgraph review [Review]
        D --> E{Approved?}
        E -->|No| B
    end
    E -->|Yes| F[(Merge)]

Читайте згори: форма «стадіон» позначає початок, ромби — запитання, стрілки з підписами — відповіді, а рамка навколо двох вузлів — рев'ю. Якщо називати кожне рішення запитанням, а кожну стрілку його відповіддю, блок-схема читається без пояснень.

Коментарі та стилі

Рядок, що починається з %%, — коментар, і він не малюється. Щоб розфарбувати вузли, визначте клас і застосуйте його:

flowchart TD
    %% the happy path
    A[Start]:::good --> B[Done]:::good
    classDef good fill:#d4f4dd,stroke:#2d7a46

Не захоплюйтеся оформленням. Більшість блок-схем читається краще з меншою кількістю кольорів, а стилі можуть виглядати по-різному у світлій і темній темах.

Часті помилки

  • Слово end малими літерами як текст вузла ламає діаграму. Пишіть End або візьміть текст у лапки.
  • Ідентифікатор вузла, що починається з o або x одразу після зв'язку, наприклад A---oB, читається як зв'язок із кружечком чи хрестиком. Додайте пробіл або напишіть з великої.
  • Спецсимволи в підписі. Дужки, круглі дужки й двокрапки треба брати в подвійні лапки: A["Save (draft)"].
  • Немає першого рядка. Без flowchart TD нічого не намалюється.
  • Забагато вузлів. Блок-схему з тридцяти прямокутників важко читати. Розділіть її або використайте підграфи.

Якщо діаграма не вийшла, Mermaid показує повідомлення про помилку, а текст лишається у вашому файлі, щоб його виправити.

Як це намалювати

Блоки Mermaid у Markdown-файлах малює GitHub і DotMD: офлайн, у світлій чи темній темі під колір сторінки. У редакторі команда Insert → Diagram вставляє в документ робочу блок-схему, а попередній перегляд перемальовується в міру набору. У тому самому посібнику розказано про діаграми послідовності, класів, станів, ER і Ганта. Сам синтаксис огородження описано в статті блоки коду в Markdown.

Питання про блок-схеми Mermaid

Як написати блок-схему в Mermaid?

Почніть блок коду mermaid з рядка flowchart TD (або LR), потім додавайте зв'язки на кшталт A[Start] --> B[End], по одному на рядок.

Чим TD відрізняється від LR у блок-схемі Mermaid?

TD (згори вниз, те саме, що TB) малює схему згори вниз, а LR — зліва направо.

Як додати текст на стрілку в Mermaid?

Поставте його між вертикальними рисками після стрілки, A -->|Yes| B, або між дефісами, A -- Yes --> B.

Чому моя блок-схема Mermaid показує помилку?

Зазвичай причина в слові end малими літерами в підписі, у відсутності першого рядка чи в спецсимволах у підписі без подвійних лапок.

Інші запитання