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 非常值得你认真试试。

相关推荐
步行cgn5 小时前
MyBatis 多参数绑定错误:Parameter 'name' not found 详解与解决方案
后端
步行cgn6 小时前
MyBatis 对单个简单类型参数的默认处理详解
后端
吃饱了得干活6 小时前
Java并发安全:看这一篇就懂了!
java·后端·面试
早点睡9756 小时前
向量检索原理入门:从 ANN 到 HNSW
后端·面试
Augustzero6 小时前
为什么高性能调度器都在“偷任务”?从无锁队列看懂工作窃取
c++·后端
Leo2826 小时前
异步任务链路如何不断链:基于 OpenTelemetry 的 Trace 设计
后端
技术长镜头6 小时前
别再死记 Record、Gap、Next-Key:沿一条 SQL 看懂 InnoDB 锁
后端·mysql
晚安code6 小时前
Java四大函数式接口一篇讲透:配上Stream流式计算处理集合
后端
晴殇i6 小时前
最近在 Github 名字叫“马尾辫”,这个真的很有趣看到头像
前端·后端·开源
IT_陈寒6 小时前
Vite打包时静态资源404?加个斜杠就能解决
前端·人工智能·后端