GitHub 2.4 万 Star!D2 正在重新定义程序员画图方式

还在用 Visio、draw.io 一点点拖组件?还在改架构图时"线全乱了"?现在,越来越多开发者开始用一种"写代码生成架构图"的方式来画图。它叫 D2,一个由 Go 编写、开源、现代化的 Diagram DSL。

你只需要写:

d2 复制代码
api -> service -> mysql

它就能自动生成一张漂亮的架构图。

更离谱的是:

  • 支持自动布局
  • 支持主题美化
  • 支持 SVG / PNG / PDF 导出
  • 支持 VSCode
  • 支持实时预览
  • 支持代码版本管理
  • 支持大型系统架构图
  • 甚至还能"手绘风"

D2 是什么?

Terrastruct 开源的一个现代化 Diagram Language(图形脚本语言)。

项目地址:

terrastruct/d2 GitHub 仓库

官方介绍:

"A modern diagram scripting language that turns text to diagrams."

简单说你写文本它自动生成图。

D2 如何安装?

安装极其简单。

Go 安装

如果你本身就是 Go 开发者:

bash 复制代码
go install oss.terrastruct.com/d2@latest

Linux / MacOS

直接:

bash 复制代码
curl -fsSL https://d2lang.com/install.sh | sh -s --

安装完成后 d2 --version 能够获取到版本信息说明安装成功了

Windows 安装

推荐:

  • Scoop
  • Chocolatey
  • 或下载 Release

也可以直接用 Go 安装。

第一个 D2 示例

创建 hello.d2 文件,内容:

d2 复制代码
user -> api
api -> redis
api -> mysql

执行 d2 hello.d2 会自动生成 hello.svg 文件

开启实时预览

这是最爽的模式。

d2 复制代码
d2 --watch hello.d2

然后浏览器自动打开,你改代码图自动刷新,开发体验非常丝滑。

微服务架构

d2 复制代码
direction: right

vars: {
  d2-config: {
    theme-id: 300
  }
}

Client: {
  shape: person
}


Client -> gateway

gateway -> user-service
gateway -> order-service
gateway -> pay-service

user-service -> mysql
order-service -> mysql
pay-service -> redis

D2 的高级玩法

真正厉害的地方来了。

1. 自定义 Shape

d2 复制代码
db: {
  shape: cylinder
}

数据库会自动变成圆柱体。

2. 人物节点

d2 复制代码
user: {
  shape: person
}

3. 云服务图标

支持:

  • AWS
  • Kubernetes
  • 网络结构
  • 云原生组件

4. 多层嵌套

d2 复制代码
cloud: {
  vpc: {
    subnet: {
      api
    }
  }
}

可以直接表达 层级架构。

5. 手绘风

d2 复制代码
vars: {
  d2-config: {
    sketch: true
  }
}

6. 主题系统

官方内置很多主题,比如:

makefile 复制代码
theme-id: 300

可以快速切换:

  • 科技风
  • 深色风
  • 极简风
  • 手绘风

官方示例图:

结语

过去程序员画图像美工,现在程序员画图终于像写代码了。而 D2正在把"架构图"真正带入工程化时代。

如果你:

  • 讨厌拖图
  • 讨厌改布局
  • 想把图纳入 Git
  • 想让 AI 自动生成架构图
  • 想做真正可维护的系统文档

那 D2 非常值得你认真试试。

相关推荐
Thneonl1 小时前
全集群钟差 300 毫秒会发生什么:证书悄悄过期,日志倒流
运维·后端
金銀銅鐵1 小时前
[Java] 借助GUI展示class文件的版本号
后端·python·ai编程
马剑威(威哥爱编程)1 小时前
【AI全栈后端12-12】Spring Boot 3.x 到 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·开发语言·spring boot·后端
136096757232 小时前
一台 4 核 8G 已经跑了 6 个站点,我是怎么把第 7 个塞进去的
后端
对象存储与RustFS2 小时前
JuiceFS + 对象存储:把 S3 变成 POSIX 文件系统实测
后端·rust·开源
她的男孩2 小时前
企业接口照样拦得住:独立 Flyway、@RequiresFeature 与离线许可证
java·spring boot·后端
十年Java程序媛2 小时前
Lambda 与函数式接口|别只会复制 ()->{},底层规则和坑一次性讲清
java·spring boot·后端
yunwei372 小时前
eBPF 入门开发实践教程一:Hello World,基本框架和开发流程
linux·后端·性能优化
全栈Agent 小李2 小时前
【无标题】
前端·后端·agent·ai编程·全栈·cursor·mcp