Документирование в целом требует работы с некоторыми видами диаграмм, будь то архитектура приложений, изображения потоков пользователей или любые представления отчетов, такие как круговые диаграммы и диаграммы Ганта.
Ранее механизм заключался в том, чтобы включать диаграммы в виде изображений после их создания в таких инструментах, как draw.io и подобных. Самый большой недостаток этого механизма заключается в том, что рабочий процесс изменения любой из созданных диаграмм очень сложен. Это приводит к отсутствию заинтересованности в поддержании диаграмм в актуальном состоянии, что еще больше приводит к пробелам в общей согласованности документации.
Вот тут-то и появляется Mermaid
. Верный своему красивому названию, Mermaid
делает процесс создания красивых диаграмм и диаграмм и их дальнейших модификаций очень простым. Слово `modifying
` становится здесь ключевым, так как это та область, за которой мы, как разработчики, изо всех сил пытаемся идти в ногу.
Как и `Infrastructure As Code or IAC
`, я бы сказал, что это `Diagram As Code or DAC
`. Mermaid позволяет декларативно создавать диаграммы в синтаксисе, подобном Markdown. Детали находятся в виде простого текста и могут быть легко изменены в любой момент времени, а также довольно легко переданы и включены в документацию.
Чтобы начать их создавать, мы можем работать с любым `editor
` по выбору, скажем, VS Code
или Sublime Text
или VIM
с установленными соответствующими пакетами плагинов `mermaid
`.
Mermaid поставляется с интеграциями для многих из них. Подробнее вы можете узнать на странице здесь — Mermaid — Интеграции
Я буду работать с VS Code
. Если вы тоже это сделаете, установите это расширение `Markdown Preview Mermaid Support
`, и все будет готово.
Давайте рассмотрим несколько простых примеров:
Создайте new file
в VS Code и выберите language
` как Markdown
`.
Создадим схему:
В созданный вами файл введите приведенный ниже код (как есть, включая галочки)
```mermaid graph TD; A --> B ```
Теперь откройте вкладку Preview
, и вы должны увидеть простой график с двумя узлами, соединяющими точки A и B, например:
Вот оно! Вы создали свою первую диаграмму, используя только текстовые объявления!
graph
— определяет тип диаграммы, которую вы хотите создать.
`TD
` указывает на график `Top Down
`. Это можно изменить на то, что вы считаете нужным, например `LR for Left Right
`, как показано ниже.
```mermaid graph LR; A --> B ```
Должно дать что-то вроде этого:
Давайте теперь придадим некоторую форму нашим узлам.
```mermaid graph LR; 1[A] --> 2{B} ```
Скобки square
вокруг узла дают форму `rectangle
`, а фигурные скобки `curly
` дают форму `diamond
`. При указании узлов с фигурами вам также необходимо указать `identifier
`, который в данном случае является просто `name
` для таких узлов, как `1
` и `2
`. Это может быть что угодно `alphanumeric
`
Формы узлов, типы стрелок (сплошные, пунктирные и т.д.), метки для стрелок и многое другое можно довольно эффективно создать с помощью `Mermaid
`. За всеми подробностями вы можете обратиться сюда — Русалка — Синтаксис диаграммы
Мы можем расширить график, чтобы обозначить какой-то поток, блок-схему за просмотр.
Ниже я пытаюсь изобразить простой User login flow
:
```mermaid graph TD a((User)) --> b[[Login]] b --> c{Has <br>account?} --> |Yes| d{Credentials Valid?} --> |No| b c -->|No| e[[Sign Up]] --> b d -->|Yes| f([Login successful]) ```
Вы должны увидеть что-то вроде этого:
Как видите, вся блок-схема представлена в простом текстовом формате. Вот откуда приходит сила.
Mermaid можно использовать не только для блок-схем, но и для создания более сложных диаграмм.
Вот пример простого Pie chart
:
Все, что вам нужно сделать, это указать `title
` для диаграммы вместе с `label
` и `value
` для отдельных частей круговой диаграммы.
```mermaid pie title Incident Distribution by Priority “Priority 2”: 5 “Priority 3”: 10 “Priority 4”: 15 ```
И вы должны получить что-то вроде этого на панели preview
:
Разве это не прекрасно и просто?
`Sequence Diagram
` - это то, с чем мы очень часто сталкиваемся, и его также довольно просто создать в `Mermaid`.
Вот один пример, изображающий последовательность взаимодействий между двумя людьми в кофейне.
```mermaid sequenceDiagram Shyam ->> +Maya: Hello Maya, how are you? Shyam ->> +Maya: Maya, can you hear me? Maya ->> +CoffeeDay: One Latte for me Maya ->> -Shyam: Hi Shyam, I can hear you! Maya ->> -Shyam: I feel great! Shyam ->> CoffeeDay: One for me too! ```
Дает вам эту красивую диаграмму:
Все это из простых данных уценки. Это действительно потрясающе!
Mermaid очень мощная программа, и это отличный способ включить диаграммы в любую документацию. Время цикла для внесения изменений и их отражения очень короткое, и в этом заключается вариант использования. Попробуй.
Приятного изучения. До следующего раза, адиос!