راهنمای نحو mermaid
mermaid یک مرجع بزرگ دارد و یک زیرمجموعه کوچک که تقریباً همهچیزی را که مردم میکشند پوشش میدهد. این صفحه همان زیرمجموعه است: شکلها، پیکانها، گروهبندی، رنگها و یک مثال کپی-پیست برای هر نوع نمودار. هر قطعه کد زیر همانطور که هست رندر میشود — آن را در ویرایشگر پیست کنید تا ببینید.
کوتاهترین نموداری که کار میکند
یک فلوچارت به یک خط تعریف و یک پیکان نیاز دارد. TD یعنی از بالا به پایین؛ برای فرایندهای عریض که بهتر جواب میدهند از LR استفاده کنید.
flowchart TD
A[Start] --> B{Ready?}
B -->|Yes| C[Ship it]
B -->|No| AA، B و C شناسه گره هستند — نامهای داخلی که هرگز کشیده نمیشوند. متن داخل کروشه برچسب است و سبک کروشه همان چیزی است که شکل را انتخاب میکند.
شکلهای گره
شکل با جفت جداکننده اطراف برچسب انتخاب میشود. اینها ارزش بهخاطر سپردن دارند:
| نحو | شکل | معنای معمول |
|---|---|---|
A[Text] | مستطیل | یک مرحله یا عملیات |
A(Text) | گرد | نقطه شروع یا پایان |
A([Text]) | قرصی | یک پایاندهنده |
A[[Text]] | زیرروال | فراخوانی یک فرایند دیگر |
A[(Text)] | استوانه | یک پایگاهداده یا مخزن |
A((Text)) | دایره | یک نقطه اتصال |
A{Text} | لوزی | یک تصمیم |
A{{Text}} | ششضلعی | یک مرحله آمادهسازی |
A[/Text/] | متوازیالاضلاع | ورودی یا خروجی |
A[/Text\] | ذوزنقه | یک عملیات دستی |
وقتی برچسب شامل کروشه، دونقطه یا نقلقول است آن را داخل نقلقول بگذارید: A["Load (raw) data"]. بدون نقلقول، تجزیهکننده علائم نگارشی شما را بهعنوان نحو میبیند.
پیکانها
| نحو | نتیجه |
|---|---|
A --> B | پیکان |
A --- B | خط، بدون سر پیکان |
A -.-> B | پیکان نقطهچین |
A ==> B | پیکان ضخیم |
A -->|label| B | پیکان با برچسب روی آن |
A --> B --> C | زنجیره، نوشتهشده در یک خط |
A --> B & C | یک مبدأ، دو مقصد |
طول پیکان هم معنادار است: --> یک رتبه است، ---> مقصد را یک رتبه پایینتر میبرد. این سادهترین کنترل چیدمانی است که mermaid در اختیارتان میگذارد.
گروهبندی با زیرگرافها
یک subgraph یک کادر برچسبدار دور گرهها میکشد. زیرگرافها تودرتو میشوند و پیکانها میتوانند آزادانه از مرزهایشان عبور کنند.
flowchart LR
subgraph api["API"]
H[Handler] --> S[(Postgres)]
end
subgraph worker["Worker"]
Q[Queue] --> W[Job]
end
H --> Qرنگ و استایلدهی
style یک گره را رنگ میکند. classDef بههمراه class مجموعهای از آنها را رنگ میکند، که از سه یا چهار گره به بعد همین را میخواهید.
flowchart TD
A[OK] --> B[Failed]
style A fill:#16a34a,stroke:#333,color:#fff
classDef bad fill:#dc2626,stroke:#333,color:#fff
class B badرنگها بخشی از سورس نمودار هستند، پس در خروجی گرفتن دوام میآورند و همراه فایل جابهجا میشوند. اینجا چیزی به تنظیم پوسته در ابزاری که آن را رندر میکند وابسته نیست.
یک مثال برای هر نوع نمودار
نمودار توالی
sequenceDiagram
participant User
participant API
participant DB
User->>API: request
API->>DB: query
DB-->>API: rows
API-->>User: responseنمودار کلاس
classDiagram
class Animal {
+String name
+move()
}
class Dog {
+bark()
}
Animal <|-- Dogنمودار حالت
stateDiagram-v2
[*] --> Idle
Idle --> Running: start
Running --> Idle: stop
Running --> [*]: finishنمودار رابطه موجودیت
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
CUSTOMER {
string name
string email
}نمودار گانت
gantt
title Project
dateFormat YYYY-MM-DD
section Phase 1
Task 1 :a1, 2026-01-01, 5d
Task 2 :after a1, 5dجایی که mermaid خودش رندر میشود
- GitHub — یک بلوک با حصار ```mermaid در issue ها، pull request ها، کامنتها و فایلهای README رندر میشود.
- GitLab — همان بلوک با حصار، در issue ها، merge request ها و ویکی.
- Notion — یک بلوک کد با زبان تنظیمشده روی Mermaid کنار سورس رندر میشود.
- Obsidian — یک بلوک mermaid با حصار در حالت پیشنمایش رندر میشود.
- سایتهای مستندات — Docusaurus، MkDocs Material و VitePress همگی از بلوکهای mermaid پشتیبانی میکنند.
این دلیل واقعی نگهداشتن نمودارها بهشکل mermaid بهجای تصویر است: نمودار در همان فایل متنی چیزی که توصیفش میکند زندگی میکند و یک بازبینی کد میتواند ببیند چه چیزی در آن تغییر کرده.
هر قطعه کد این صفحه را امتحان کنید
آن را در تب کد پیست کنید تا فوراً رندر شود — یا همان نمودار را روی بوم بسازید و نحو را برعکس بخوانید.
پرسشهای متداول
چطور داخل برچسب یک گره خط جدید اضافه کنم؟
از <br> داخل یک برچسب نقلقولشده استفاده کنید: A["First line<br>Second line"]. mermaid برچسب را بهشکل HTML رندر میکند، پس این تگ کار میکند حتی اگر بقیه نحو HTML نباشد.
چرا برچسب من نمودار را خراب میکند؟
تقریباً همیشه بهخاطر یک کروشه، پرانتز، دونقطه یا نقلقول بدون علامت داخل برچسب است. کل برچسب را داخل نقلقول دوتایی بگذارید تا تجزیهکننده دست از رفتار با علائم نگارشیتان بهعنوان نحو بردارد.
میتوانم چیدمان را کنترل کنم؟
فقط بهطور غیرمستقیم. جهت را انتخاب کنید (TD، LR، BT، RL)، از پیکانهای بلندتر (--->) برای دور کردن بیشتر گرهها از هم استفاده کنید و گرههای مرتبط را در زیرگرافها گروهبندی کنید. mermaid بقیه را محاسبه میکند — هیچ مختصاتی وجود ندارد.
این ویرایشگر از کدام نسخه mermaid استفاده میکند؟
mermaid 11، نسخه اصلی فعلی، پس هر چیزی که برای نحو v10 و v11 مستند شده اینجا رندر میشود.