Основы синтаксиса D2

D2 — это современный инструмент на основе текста для создания четких, легко читаемых диаграмм. D2 означает «Декларативное моделирование». В VPasCode D2 позволяет программистам и архитекторам решений превращать простой текст кода в чистые визуальные модели без необходимости вручную рисовать фигуры.

Совет:Синтаксис D2 разработан для простоты и удобочитаемости. Фигуры, соединения, метки и группы можно все записать с помощью простых строк текста без сложных настроек.

1. Основные фигуры и соединения

Чтобы создать фигуры, просто введите их имена. Чтобы соединить фигуры, используйте стрелку (-> для одностороннего или <-> для двустороннего).

# Простое соединение
Пользователь -> Веб-сервер: HTTP-запрос
Веб-сервер -> База данных: Получить данные
База данных -> Веб-сервер: Вернуть результаты
Веб-сервер <-> Кэш: Синхронизация чтения/записи

D2 simple connection diagram showing request and response flows between User, Web Server, Database, and Cache - Text to diagram editor - VPasCode

2. Типы фигур и пользовательские метки

По умолчанию фигуры отображаются как стандартные прямоугольники. Вы можете легко изменить тип иконки фигуры или задать пользовательскую метку, используя свойство shape свойство.

# Определение типов фигур
Клиент: {
  shape: person
}

Облачные сервисы: {
  shape: cloud
}

Основная БД: {
  shape: cylinder
  label: "Основная база данных (PostgreSQL)"
}

Клиент -> Облачные сервисы -> Основная БД

D2 custom shapes showing person, cloud, and database cylinder icons linked in sequence - Text to diagram editor - VPasCode

3. Определение классов

D2 нативно поддерживает проектирование объектно-ориентированных структур с использованием фигуры class фигуры.

КлиентскийСчет: {
  shape: class

  accountId: String
  emailAddress: String

  isActive(): Boolean
}

D2 class diagram displaying CustomerAccount properties and isActive method - Text to diagram editor - VPasCode

4. Вложенные контейнеры (группировка)

D2 позволяет легко группировать элементы внутри контейнеров с помощью стандартных фигурных скобок (“{}). Вы также можете связывать элементы между разными группами с помощью нотации с точкой.

# Группировка с помощью контейнеров
Приложение с фронтенд-интерфейсом: {
  React UI -> Менеджер состояния
}

Бэкенд-инфраструктура: {
  Шлюз API -> Микросервис аутентификации
  Шлюз API -> Микросервис заказов
}

# Связь между группами
Приложение с фронтенд-интерфейсом.Менеджер состояния -> Бэкенд-инфраструктура.Шлюз API: Вызов REST

D2 nested containers grouping Frontend Application and Backend Infrastructure modules - Text to diagram editor - VPasCode

5. Стили и цвета

Пользовательские цвета фона, цвета линий и стили шрифтов можно настроить непосредственно внутри блока с помощью ключевого словаstyleключевое слово.

Сервис A: {
  style: {
    fill: "#e0e7ff"
    stroke: "#4338ca"
    border-radius: 8
  }
}

Сервис B: {
  style: {
    fill: "#fef3c7"
    stroke: "#d97706"
  }
}

Сервис A -> Сервис B: Отправить сообщение

D2 styled blocks showing custom background colors and border styles for Service A and Service B - Text to diagram editor - VPasCode

6. Краткая справочная таблица синтаксиса

Понятие Пример кода Что делает
Направленное соединение A -> B Рисует стрелку, указывающую от A к B.
Метка линии A -> B: Отправить данные Добавляет текст поверх стрелки соединения.
Двунаправленная стрелка A <-> B Рисует стрелку, указывающую в обе стороны.
Контейнеры / Группы Сервер: { ... } Группирует несколько фигур в одну коробку.
Выбор фигуры форма: цилиндр Преобразует стандартную коробку в значок базы данных, человека, облака, класса и т.д.
Комментарии # Мой комментарий Однострочные комментарии игнорируются при рендеринге.
Прокрутить вверх