-
-
Save tjx666/9dd8e1e4ee7d196845bc4312288f1b99 to your computer and use it in GitHub Desktop.
Mermaid 代码生成:强制性语法检查清单
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Mermaid 代码生成:强制性语法检查清单 | |
在生成任何 Mermaid 图表之前,你 **必须** 将最终代码与以下清单中的每一条规则进行逐一比对,确保 100% 符合规范。**这是一个硬性要求,优先级高于其他风格建议。** 你的行动步骤应该是: | |
1. 在脑海中草拟 Mermaid 逻辑。 | |
2. 编写实际的 Mermaid 代码。 | |
3. **根据下面的清单,逐行审查你刚写的代码。** | |
4. 修正所有不符合规范的地方。 | |
5. 最终输出修正后的、可直接复制运行的代码。 | |
6. 输出 mermaid 代码块之后,在下一行紧接着输出:我已检查过 mermaid 语法完全符合检测清单的要求 | |
--- | |
### 清单详情 | |
#### 规则 1:边标签 (Edge Label) - 必须是绝对纯文本 | |
> **核心:** `|...|` 内部严禁出现任何 Markdown 标记、列表标记、括号。这最容易导致渲染失败。 | |
- **✅ Do**: `A -->|处理纯文本数据| B` | |
- **❌ Don't**: `A -->|1. 有序列表项| B` (禁止数字列表) | |
- **❌ Don't**: `A -->|- 无序列表项| B` (禁止横杠列表) | |
- **❌ Don't**: `A -->|转换数据 (重要)| B` (禁止圆括号) | |
- **❌ Don't**: `A -->|转换数据 [重要]| B` (禁止方括号) | |
#### 规则 2:节点定义 (Node Definition) - 正确处理特殊字符 | |
> **核心:** 节点文本和子图标题应使用引号包裹以支持特殊字符。`()` `[]` 等括号用于定义节点形状,出现在节点文本中会解析错误。 | |
- **场景:** 节点文本自身包含括号,如 `React (JSX)`。 | |
- **✅ Do**: `I_REACT["<b>React 组件 (JSX)</b>"]` (使用引号包裹文本) | |
- **❌ Don't**: `I_REACT(<b>React 组件 (JSX)</b>)` (错误用法,括号被解析为形状定义) | |
- **❌ Don't**: `subgraph 插件增强 (Plugins)` (子图标题也应该使用双号包裹,不然这里圆括号也会导致语法解析错误) | |
#### 规则 3:文本中的双引号 - 必须转义 | |
> **核心:** 在节点文本内的引号要使用 `"` 来表示双引号。 | |
- **✅ Do**: `A[一个包含 "引号" 的节点]` | |
- **❌ Don't**: `A[一个包含 "引号" 的节点]` | |
#### 规则 4:格式化 - 必须使用 HTML 标签 | |
> **核心:** 换行、加粗等所有格式化都应使用 HTML 标签,不要使用 Markdown。 | |
- **✅ Do (高可靠性)**: `A["<b>加粗</b>和<code>代码</code><br>这是新一行"]` | |
- **❌ Don't (普遍无效)**: `C["# 这是一个标题"]` | |
- **❌ Don't (普遍无效)**: ``C["`const` 表示常量"]`` | |
- **⚠️ Warn (结果不一致)**: `B["虽然 **Markdown 加粗** 可能碰巧能用,但应避免"]` | |
#### 规则 5:参与者、消息标签字段禁止使用 HTML 标签(如 `<b>`, `<code>`) | |
> **新增规则(重点)** | |
> 在时序图等 Mermaid 语法中,`participant` 的显示名(`as` 后),以及消息描述区域(`:` 后面的内容),**禁止使用 `<b>`, `<code>` 等 HTML 标签**。这些标签在多数环境不会生效,反而会被原样输出或导致解析兼容性问题。 | |
> - **✅ Do**: `participant A as 客户端` | |
> - **❌ Don't**: `participant A as <b>客户端</b>` | |
> - **✅ Do**: `A->>B: 1. 请求建立连接` | |
> - **❌ Don't**: `A->>B: 1. <code>请求建立连接</code>` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment