尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
D2 如何用 shape: sequence_diagram 声明时序图并限制 near 用法?
D2 如何用 shape: sequence_diagram 声明时序图并限制 near 用法【免费下载链接】d2D2 is a modern diagram scripting language that turns text to diagrams.项目地址: https://gitcode.com/GitHub_Trending/d2/d2D2 支持用shape: sequence_diagram把一个作用域声明成时序图直接子 key 成为参与者actors参与者的边成为按文件行序从上到下排列的消息。这个形状既可以设在根上也可以设在任意容器上。同时编译器对near字段有一组硬性限制其中与序列图直接相关的两条是near不能指向序列图内部的对象也不能指向时序图参与者这类特殊对象的后代。本文基于仓库中的编译器校验逻辑d2compiler/compile.go与编译测试用例d2compiler/compile_test.go给出声明时序图的写法、可组合的结构以及near的每条限制和对应报错。准备安装 D2 并准备 .d2 文件按 README.md 的 Quickstart安装后用 CLI 从.d2文件生成 SVG# First, install D2 curl -fsSL https://d2lang.com/install.sh | sh -s -- echo x - y - z in.d2 d2 --watch in.d2 out.svgd2 --watch会打开浏览器窗口显示out.svg并在in.d2变化时实时重新渲染适合边改边看时序图布局。形状值sequence_diagram的正式定义在 d2target/d2target.go。声明时序图根作用域或容器两种写法都来自编译测试用例。把整张图设为时序图root_sequence用例shape: sequence_diagram把某个容器设为时序图basic_sequence用例编译器会把该对象的 shape 记录为sequence_diagramx: { shape: sequence_diagram }声明后容器内直接子 key 是参与者参与者之间的边是消息sequence-timestamp用例的骨架shape: sequence_diagram a b a - b布局由 d2layouts/d2sequence/sequence_diagram.go 中的newSequenceDiagram处理其中两条编译期/布局期约束会直接报错一个参与者都没有时no actors declared in sequence diagramsequence_diagram.go 第 109 行参与者本身再声明成时序图时actors in sequence diagrams cannot themselves be sequence diagramssequence_diagram.go 第 103 行。消息的上下顺序由边在文件中的行号决定getEdgeEarliestLineNumsequence_diagram.go 第 64-76 行所以调整脚本里边的书写顺序就能调整消息的先后。组合 group、span 与 notesequence_scoping用例展示了一个带group的完整写法x: { shape: sequence_diagram a b group: { a - b a.t1 - b.t1 b.t1.t2 - b.t1 } }sequence_grouped_note用例展示了参与者下的 note带引号的子 key 作为标注以及用容器把它们分组shape: sequence_diagram a d choo: { d.this note }这些结构在布局层的对应物参与者有边的子对象成为 span生命线旁的方框只有标注的子对象成为 note带标签的group容器会框住其中所有消息见 sequence_diagram.go 第 143-169 行 与placeGroups。写这些结构时的规则就是上面两条参与者不能缺、参与者不能自身是时序图。near 字段的限制near用来把一个形状放到另一个形状的附近。编译器在validateNeard2compiler/compile.go 第 1208-1277 行中逐条校验以下每条限制都有对应的固定报错文案取值范围near的值必须是某个形状的路径或是以下常量之一top-left、top-center、top-right、center-left、center-right、bottom-left、bottom-center、bottom-rightd2ast/keywords.go 第 81-92 行 的NearConstantsArray。不满足时报错near key ... must be the absolute path to a shape or one of the following constants: ...。不能指向序列图内部对象near_sequence用例compile_test.go 第 2617-2627 行x: { shape: sequence_diagram a } b.near: x.a预期报错文档示例测试断言的原文near_sequence.d2:5:9: near keys cannot be set to an object within sequence diagrams。即b想贴住时序图里的参与者x.a编译器拒绝。不能指向祖先或后代报错分别为near keys cannot be set to an ancestor与near keys cannot be set to an descendant。不能指向本身带常量 near 的对象报错near keys cannot be set to an object with a constant near key。不能指向特殊对象的后代包括 grid cell 和时序图参与者报错为near keys cannot be set to descendants of special objects, like grid cells或... like sequence diagram actors。常量 near 只能用于根级形状constant near keys can only be set on root level shapes。从常量 near 对象出发的边不能进入其自身edge from constant near ... cannot enter itself。与序列图相关的要点是第 2、5 条时序图的参与者和内部结构不参与near定位。注意这与边的行为不同——leaky_sequence用例compile_test.go 第 2664-2674 行中b - x.a预期无错误说明边可以引用序列图内部对象而near不行。验证正向验证按 Quickstart 执行d2 --watch in.d2 out.svg浏览器中打开的 SVG 即为渲染结果改脚本会实时刷新。反向验证写一条违反限制的near例如上面第 2 条的b.near: x.a编译会失败并输出形如文件:行:列: near keys cannot be set to an object within sequence diagrams的错误定位信息指向nearkey 所在位置。各用例的完整预期错误串可在 d2compiler/compile_test.go 的expErr字段中核对。【免费下载链接】d2D2 is a modern diagram scripting language that turns text to diagrams.项目地址: https://gitcode.com/GitHub_Trending/d2/d2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

NocoBase CLI `nb proxy nginx status` 命令详解:查看 Nginx 代理运行状态

NocoBase CLI `nb proxy nginx status` 命令详解:查看 Nginx 代理运行状态

NocoBase CLI nb proxy nginx status 命令详解:查看 Nginx 代理运行状态 【免费下载链接】nocobase NocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of pr…

📅 2026/9/13 23:30:22
声发射上升时间精确计算:从10%-90%阈值到多参数工程校准

声发射上升时间精确计算:从10%-90%阈值到多参数工程校准

简介:本资源是一份面向声学信号处理初学者与无损检测工程技术人员的MATLAB实践脚本,聚焦声发射(AE)信号关键时域参数的量化分析,解决材料内部应力释放、裂纹扩展等动态过程的特征提取难题。压缩包仅含1个核心文件Acous…

📅 2026/9/13 23:25:22
Chrome浏览器高效使用指南:解锁隐藏生产力

Chrome浏览器高效使用指南:解锁隐藏生产力

Chrome不仅是网页浏览工具,更是强大的生产力平台。 鉴于国内网络访问Google官网获得正版Chrome浏览器确实可能存在困难, 可以参考 Chrome(谷歌浏览器)国内下载地址 这个可行的替代方案、实时获得最新版本的Chrome浏览器。 掌握以下…

📅 2026/9/13 23:25:22
MORE NEWS

更多资讯

📰

HarmonyOS LTPO 帧率实战:别把刷新率锁死 120Hz,expected 按内容填

本文聚焦 HarmonyOS 上基于 LTPO 屏幕的自适应刷新率与可变帧率能力。文中代码为便于说明自行编写,API 名称、枚举取值与版本号等事实性信息均标注官方出处;涉及真机功耗/帧率表现的部分已明确标注,未编造任何实测数据。 引子:一行…

📰

自动重试到多模型兜底:Portkey AI Gateway 网关配置完整指南

自动重试到多模型兜底:Portkey AI Gateway 网关配置完整指南 【免费下载链接】gateway A blazing fast AI Gateway with integrated guardrails. Route to 1,600 LLMs, 50 AI Guardrails with 1 fast & friendly API. 项目地址: https://gitcode.com/GitHub_T…

📰

InsForge 环境变量配置与密钥安全:本地开发到生产上线的完整避坑清单

InsForge 环境变量配置与密钥安全:本地开发到生产上线的完整避坑清单 【免费下载链接】InsForge The all-in-one, open-source backend platform for agentic coding. InsForge gives your coding agent database, auth, storage, compute, hosting, and AI gateway…

📰

HuggingFace|当AI替你“读”代码:SmolLM静态工程评测实战,兼谈CSDN内容分发的底层逻辑

HuggingFace|当AI替你“读”代码:SmolLM静态工程评测实战,兼谈CSDN内容分发的底层逻辑评测快照:huggingface/SmolLM a041759883ec7152d18fb985ea49be641a0bceef 评测方式:纯静态源码证据驱动,可复现&#…

📰

油价破百、央行决议、通胀数据扎堆:这种行情密集日该怎么盯盘

做量化这几年,我总结出一个规律:市场最容易出大行情的,不是单边趋势,而是一堆宏观事件挤在同一天的时候。 最近就是这种状态。原油站上100美元,美股连跌三天,欧洲央行要公布利率决议,美国PPI和…

📰

AI决策搜索:从信息检索到智能推荐的技术演进

1. AI搜索的范式转移:从答案检索到决策支持过去二十年里,搜索引擎的核心逻辑始终围绕关键词匹配展开。用户输入问题,系统返回相关网页链接。但2023年大模型技术的突破性进展,彻底改变了这个游戏规则。当ChatGPT能够直接生成完整答…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬