Diagram MakerOverview
🗂️

Overview

What the Diagram Maker is and how it works

什么是图表制作器?

图制作器是一种基于 Datro DSL 构建的文本优先架构图绘制工具,这是一种结构化、经过验证且格式规范的语言,用于将软件系统描述为数据而不是图片。

您无需在画布上拖动框,而是编写一个 .dtro 文件。该工具链对其进行解析、验证架构规则、强制执行 WCAG 对比度,并将其渲染为 SVG、PNG 或交互式 JSON — 所有这些都来自单一事实来源。

打开图表制作器

在几分钟内编写、验证并渲染您的第一个图表。

为什么选择 Datro 而不是 Mermaid 或 draw.io?

  • 类型化节点 — 23 种语义类型(servicedatabasegatewayqueue、...)自动生成一致、形状正确的图表。
  • 键入边缘 — 21 种语义类型(httpquerypublishgrpc、...)对连接进行颜色编码和样式设置,无需手动覆盖。
  • 架构约束 - 编写像 database !-> external 这样的规则,验证器在解析时而不是审查时强制执行它们。
  • 规范格式化程序datro fmt 将每个文件重写为确定性格式; diff 显示真实的变化,而不是重新格式化噪音。
  • 导入和撰写 — 使用 import、命名空间别名和公开白名单将大型图表跨文件拆分。
  • WCAG 2.1 辅助功能 — 对比度会根据您的主题调色板自动检查;当你低于 AA 时,W602 会触发。
  • 机器可读的 JSON IR — 每个图表都会导出可由任何工具链、CI 系统或自定义渲染器使用的无损 JSON IR。

工具链如何工作

每个 .dtro 文件在成为图表之前都会经过四个阶段:

1·解析2·验证3·出口4·渲染
  • 解析 — 递归下降词法分析器 + 解析器将源文本转换为 DatroIR 对象。它从不抛出;所有问题均以 Diagnostic[] 形式返回,并具有精确的行/列位置。
  • 验证 — 4 遍:结构完整性 → 语义约束检查 → 信息提示 → WCAG 2.1 对比和标签长度可访问性。
  • 导出 — 将经过验证的 IR 转换为 DOT (Graphviz)、Cytoscape.js JSON 或无损 JSON IR。
  • 渲染 — DOT 输出传递到 Graphviz 以生成 SVG 或 PNG 像素完美的输出。

一个完整的例子

.dtro 文件定义了一种支付服务,其中包含组、类型化节点、语义边缘、约束规则、布局提示和 WCAG 检查的颜色主题 — 所有这些都在一个文件中:

payment-service.dtro
#!DATRO 1.0

meta {
  title:   "Payment Service"
  version: "2.0.0"
  owner:   "payments-team"
  sla:     "99.95%"
}

group data {
  label:   "Data Layer"
  members: [payments_db, fraud_cache]
}

node api_gw      { type: gateway  label: "API Gateway" }
node payment_svc { type: service  label: "Payment Service"  attrs { tech: "nestjs" } }
node payments_db { type: database label: "Payments DB"      attrs { tech: "postgres" } }
node fraud_cache { type: cache    label: "Fraud Cache"      attrs { tech: "redis" } }
node stripe      { type: external label: "Stripe" }

edge api_gw      -> payment_svc  { kind: http  label: "POST /charge" }
edge payment_svc -> payments_db  { kind: query }
edge payment_svc -> fraud_cache  { kind: read }
edge payment_svc -> stripe       { kind: http  label: "charge API" }

constraint {
  id:       "no-db-external"
  rule:     "database !-> external"
  message:  "Databases must not call external APIs"
  severity: error
}

layout { direction: LR  algo: dagre }

theme {
  palette { gateway: "#FFD0D0"  service: "#D0E8FF"  database: "#FFE8C0"  cache: "#C0FFE8" }
  accessibility { min_contrast: AA }
}
💡

立即尝试

将上面的示例粘贴到图表制作编辑器中,然后单击验证 - 您将看到带有行号的键入诊断,然后一键渲染为 SVG。

特点总结

23种节点类型21种边缘WCAG 2.1 AA/AAAJSON 架构草案-07SVG · PNG · DOT · Cytoscape导入/撰写

继续 Quick Start 编写您的第一个图表,或直接跳到 Language Reference 了解完整语法。

Schema v1 · Updated September 2026