Схемы из текста
Синтаксис Mermaid: примеры диаграмм и шпаргалка
Mermaid превращает несколько строк текста в диаграмму: блок-схему, последовательность вызовов, схему базы данных или план работ. В шпаргалке — синтаксис блок-схемы со всеми формами, стрелками и группами и короткие рабочие примеры остальных видов диаграмм, которые можно скопировать и поправить под себя.
На этой странице
- Что такое Mermaid и где он работает
- Блок-схема: синтаксис flowchart
- Заголовок и направление
- Блоки: имя и надпись
- Формы блоков
- Стрелки и подписи
- Группы: subgraph
- Комментарии и оформление
- Другие виды диаграмм Mermaid
- Последовательность: sequenceDiagram
- Классы: classDiagram
- Состояния: stateDiagram-v2
- Схема данных: erDiagram
- План работ: gantt
- Круговая диаграмма: pie
- Карта мыслей: mindmap
- Шпаргалка: блок-схема на одном экране
- Mermaid и доска: текст туда и обратно
- Частые ошибки в синтаксисе
- Чек-лист перед публикацией схемы
- Вопросы и ответы
Что такое Mermaid и где он работает#
Mermaid — это язык описания диаграмм обычным текстом и библиотека, которая рисует по этому тексту картинку. Вы не двигаете прямоугольники мышью, а пишете A --> B, и на экране появляются два блока со стрелкой. Подход называют «диаграммы как код»: схема хранится рядом с исходниками, правится в любом редакторе и проходит ревью вместе с кодом.
Главная причина популярности Mermaid — поддержка в местах, где программисты и так пишут тексты. GitHub и GitLab показывают диаграмму прямо в Markdown: достаточно поместить текст в блок кода с пометкой mermaid. Многие вики, редакторы заметок и генераторы документации тоже умеют его рисовать — сами или с расширением. Для черновиков есть онлайн-редактор Mermaid Live: слева текст, справа картинка, которая обновляется при каждом нажатии клавиши.
- Схема живёт в репозитории. Изменили архитектуру — поправили три строки в том же запросе на слияние, и история изменений схемы видна в истории файла.
- Не нужна отдельная программа. Текст открывается где угодно, а картинку нарисует сервис, в котором его читают.
- Удобно сравнивать версии. Разница между двумя версиями схемы — это разница между двумя текстами, её видно построчно.
- Схему легко сгенерировать. Скрипт, база знаний или нейросеть выдают текст Mermaid, а не картинку, которую потом не исправить.
У подхода есть и обратная сторона: раскладку блоков выбирает библиотека, а не вы. Для схемы из десяти блоков это плюс, для схемы из сотни — частая причина запутанных стрелок. Поэтому Mermaid хорош для небольших схем рядом с кодом, а большие обзорные схемы удобнее собирать на доске. Как понять, нужна ли вообще блок-схема и чем она отличается от других схем процессов, — в статье что такое блок-схема.
Блок-схема: синтаксис flowchart#
Блок-схема — самый ходовой вид диаграмм Mermaid: процессы, алгоритмы, пути пользователя, наброски архитектуры. Разберём её синтаксис по частям: заголовок, блоки, формы, стрелки, группы, комментарии и оформление. Под каждым примером — что сделает с ним NodePanel, если вставить текст на доску: эти подписи проверяются настоящим разборщиком приложения.
Заголовок и направление#
Первая строка говорит, что это блок-схема и куда она растёт. Ключевое слово — flowchart или более старое graph, оба понимаются одинаково. Направление пишут двумя буквами: TB или TD — сверху вниз, BT — снизу вверх, LR — слева направо, RL — справа налево.
Цепочку шагов можно записать одной строкой — стрелки ставятся подряд. Это удобно для линейных процессов, где у каждого шага один следующий:
Блоки: имя и надпись#
У каждого блока есть имя (id) и надпись. В записи check{Всё заполнено?} имя — check, надпись — текст в скобках. Имя нужно, чтобы ссылаться на блок в других строках: надпись пишут один раз, при первом упоминании, а дальше — только имя. Если надписи нет, Mermaid покажет само имя.
- Имя — одно слово без пробелов:
start,check,pay. Латиница надёжнее всего: такой текст одинаково поймут все сервисы. - Не называйте блок словом ``end`` в нижнем регистре — это служебное слово, которым закрывают группы.
End,finishилиdoneподойдут. - Надпись со скобками, точкой с запятой или стрелкой берите в кавычки, иначе разбор споткнётся о лишний знак.
- Перенос строки в надписи —
<br>: длинный текст читается лучше в две строки.
Формы блоков#
Форму задают скобки вокруг надписи. В блок-схемах у форм есть устоявшийся смысл: капсула — начало и конец, прямоугольник — действие, ромб — вопрос с ветками «да» и «нет», цилиндр — хранилище данных, двойная рамка — подпроцесс, который расписан отдельно.
На доске NodePanel свои фигуры, поэтому часть форм переносится не один в один: двойная рамка становится карточкой, цилиндр, шестиугольник и параллелограмм — прямоугольником, а окно вставки предупреждает об этом по номеру строки. Полная таблица соответствий — в справочнике по вставке Mermaid.
Стрелки и подписи#
Связь пишется между двумя блоками. Основной набор: --> — стрелка, --- — линия без стрелки, -.-> — пунктирная стрелка, ==> — толстая, <--> — стрелки с обеих сторон. Подпись ставят двумя способами: -->|успех| или -- успех -->, результат одинаковый.
Несколько блоков, которые ведут в один, записывают через &. Это сокращение: Mermaid развернёт его в отдельную связь от каждого блока.
Группы: subgraph#
Группа объединяет блоки в рамку с названием — по участникам процесса, по системам или по этапам. Её открывают строкой subgraph имя [Название] и закрывают словом end. Связи можно вести между блоками разных групп, а также от группы и к группе целиком.
Группы можно вкладывать друг в друга: кластер внутри облака, отдел внутри компании. На доске NodePanel вложенных групп нет — внутренняя группа станет отдельной рамкой поверх внешней, и окно вставки об этом предупредит.
Комментарии и оформление#
Строка, которая начинается с %%, — комментарий: Mermaid её не рисует. Цвета задают классами: classDef описывает класс, а :::имя после блока его применяет. Есть и точечные команды: style для одного блока и linkStyle для связи.
NodePanel оформление из текста пропускает: на доске своя палитра, и блоки перекрашиваются в панели свойств уже после вставки. Команда click, которая в Mermaid вешает на блок ссылку, тоже не переносится — это защита от чужих ссылок в скопированном тексте.
Другие виды диаграмм Mermaid#
Кроме блок-схем Mermaid умеет ещё два десятка видов диаграмм. Ниже — семь самых используемых, по короткому рабочему примеру на каждую. Их показывают GitHub, GitLab и другие сервисы с поддержкой Mermaid.
Последовательность: sequenceDiagram#
Показывает, кто кому и в каком порядке отправляет сообщения: пользователь, сайт, сервер, внешний сервис. Время идёт сверху вниз. ->> — запрос, -->> — ответ пунктиром, participant … as … задаёт короткое имя и подпись.
Классы: classDiagram#
Классы с полями и методами и связи между ними: наследование, состав, ассоциация. Плюс перед именем — публичное поле, минус — закрытое. На стрелке можно указать кратность.
Состояния: stateDiagram-v2#
Через какие состояния проходит объект — заказ, документ, заявка — и какие события его переводят. [*] — начальная и конечная точка, текст после двоеточия — событие перехода.
Схема данных: erDiagram#
Сущности базы данных и связи между ними с кратностью: один ко многим, один к одному. Символы на концах линии читаются как «ноль или один», «ровно один», «много». Имена сущностей обычно пишут латиницей, как таблицы в базе.
План работ: gantt#
Задачи на шкале времени, разбитые на разделы. У задачи — дата начала и длительность или зависимость after от другой задачи. Подходит для плана релиза в README, но не заменяет трекер задач.
Круговая диаграмма: pie#
Доли целого: название и число для каждого сектора, проценты Mermaid посчитает сам. Цифры в примере условные — подставьте свои.
Карта мыслей: mindmap#
Иерархия идей от центральной темы. Уровень задаётся отступом, форма корня — теми же скобками, что у блоков. Для быстрого конспекта хватает, но двигать ветки и дописывать идеи вместе удобнее на доске — об этом статья как сделать интеллект-карту.
Шпаргалка: блок-схема на одном экране#
Mermaid удобен
- Схема живёт в README или документации рядом с кодом
- До десяти — двадцати блоков, раскладка не принципиальна
- Схему генерирует скрипт или нейросеть
- Важна история изменений в репозитории
Лучше доска
- Большая обзорная схема, где важно, что где лежит
- Схему обсуждают и правят несколько человек сразу
- Нужны стикеры, комментарии и пометки на полях
- Схему показывают на встрече или созвоне
Mermaid и доска: текст туда и обратно#
Текст и доска хорошо дополняют друг друга. Набросать схему текстом быстро, особенно если её подсказала нейросеть или она уже лежит в README. Обсуждать, двигать и дополнять удобнее на доске. В NodePanel блок-схему Mermaid можно вставить на доску — она станет обычными фигурами, связями и группами, разложенными по направлению из текста, — а готовую доску скопировать обратно текстом flowchart.
Скопируйте текст блок-схемы
Из README, вики, ответа нейросети или из примеров выше — первая строка должна начинаться с
flowchartилиgraph.Вставьте на доску
Нажмите CtrlV на холсте или выберите в меню доски «Вставить Mermaid…». Окно покажет, сколько будет блоков и связей, и замечания по строкам.
Доработайте схему
После вставки это обычная доска: перекрасьте блоки, добавьте стикеры с вопросами, пригласите коллег. Одна отмена убирает всю вставку.
Верните схему в текст
Меню доски → «Скопировать как Mermaid» — и текст готов для README или документации.
Подробный урок с упражнениями — в руководстве «Схема из текста: Mermaid с нуля»: там по шагам разобрано окно вставки, рецепты и частые ошибки. Попробовать без регистрации можно в песочнице на главной: вставка Mermaid работает и там. Для процесса с нуля подойдёт шаблон блок-схемы процесса, а что ещё умеет доска для процессов — на странице блок-схема онлайн.
Частые ошибки в синтаксисе#
- Стрелка из одного дефиса.
->Mermaid не поймёт — нужно два дефиса:-->. - Пробел в имени блока.
Мой блок --> Конецразберётся не так, как задумано. Имя — одним словом, текст — в надпись:my[Мой блок]. - Незакрытая скобка или кавычка. Одна потерянная скобка ломает строку целиком. Проверяйте пары, особенно в длинных надписях.
- Скобки внутри надписи без кавычек. Надпись со скобками, двоеточием или точкой с запятой берите в кавычки.
- Забытый ``end`` у группы. Тогда в группу попадает всё, что написано ниже, и схема съезжает.
- Слово ``end`` как имя блока. Mermaid примет его за конец группы. Назовите блок
finishилиdone. - Нет первой строки. Без
flowchartилиgraphтекст не считается блок-схемой вовсе. - Всё в одной схеме. Пятьдесят блоков с перекрёстными стрелками Mermaid нарисует, но читать это никто не станет. Разбейте схему на несколько — по одному вопросу на каждую.
Тот же принцип «одна схема — один вопрос» работает и для архитектурных схем: о том, как разделить систему на уровни детализации, — в статье как нарисовать архитектуру приложения.
Чек-лист перед публикацией схемы#
- Первая строка —
flowchartилиgraphс направлением, которое подходит схеме. - У каждого блока понятное короткое имя, надпись написана один раз.
- Формы несут смысл: капсула — начало и конец, ромб — вопрос, прямоугольник — действие.
- У каждого ромба подписаны все ветки, ни одна не обрывается в пустоту.
- Пунктир и толстые линии означают то, что написано в легенде.
- Группы закрыты словом
end, ни один блок не называетсяend. - Надписи со скобками и знаками препинания — в кавычках.
- Схема проверена в просмотре: в редакторе Mermaid, на GitHub или в окне вставки NodePanel.
Вопросы и ответы#
Где можно посмотреть диаграмму Mermaid, не устанавливая программ?
В онлайн-редакторе Mermaid Live, в Markdown на GitHub и GitLab и во многих вики. Блок-схему можно также вставить на доску NodePanel — она станет обычными блоками и связями.
Чем flowchart отличается от graph в Mermaid?
Это два названия одной и той же блок-схемы. Слово graph появилось раньше, flowchart — более новое и поддерживает больше возможностей, поэтому в новых схемах лучше писать flowchart.
Можно ли вставить в NodePanel диаграмму последовательности или ER-диаграмму?
Нет, окно вставки NodePanel понимает только блок-схемы flowchart и graph и сообщает об этом для остальных видов. Сюжет диаграммы последовательности можно переписать блок-схемой — шагами и стрелками.
Сохранятся ли цвета из classDef при вставке на доску?
Нет, оформление из текста NodePanel пропускает и один раз предупреждает об этом. Цвета блоков меняются в панели свойств после вставки.
Как сделать перенос строки в надписи блока Mermaid?
Поставьте в надпись тег br в угловых скобках и возьмите надпись в кавычки. Mermaid и окно вставки NodePanel покажут текст в две строки.