引言:文檔革命由此開始
在快速變化的軟體開發世界中,我們都面臨一個令人不安的事實:我們的文檔幾乎總是過時我們花費了無數小時與拖放式繪圖工具搏鬥, painstakingly 對齊方框和箭頭,卻只看著我們精心製作的圖表在程式碼變更的瞬間變得過時。
但如果文檔能跟上開發的步伐呢?如果建立專業架構圖就像寫一個函數一樣簡單呢?
歡迎來到程式碼繪圖革命。本教程將引導您完成VPasCode,Visual Paradigm 的瀏覽器平台,徹底改變了團隊建立、分享和維護系統架構圖的方式。將圖表視為程式碼,您將發現如何在幾分鐘內(而非幾小時)產出出版級別的視覺圖表,同時確保您的文檔能與系統無縫同步演進。
無論您是記錄微服務的開發人員、向利害關係人展示架構的架構師,還是映射基礎設施的 DevOps 工程師,這份全面指南將賦予您掌握 VPasCode 的技能,提升團隊的文檔水平。
1. 快速入門:5 分鐘完成您的第一張圖表 {#getting-started}
無需安裝,無需設定,只需程式碼
VPasCode 最強大的功能之一是其零摩擦的入門體驗。無需安裝任何內容,無需建立帳戶,也無需複雜設定。讓我們現在就建立您的第一張圖表。
逐步快速開始:
-
前往 VPasCode:開啟瀏覽器並造訪https://www.vpascode.com/editor/
-
選擇您的引擎:從下拉選單中選擇:
-
Mermaid——最適合流程圖和現代文檔
-
PlantUML——最適合 UML 和企業架構
-
Graphviz——完美適用於複雜的網路拓撲結構
-
-
載入範本:點擊「範例」並選擇入門範本
-
編輯與預覽:修改左側面板中的程式碼;即時觀察右側圖表的更新
-
匯出或分享:以 SVG/PNG 格式下載,或複製可分享的網址

圖 1:VPasCode 能將基於文字的程式碼即時轉換為專業架構圖
2. 了解 VPasCode 介面 {#interface}
在深入語法之前,讓我們先熟悉工作區。

圖 2:雙面板 VPasCode 介面——左側為程式碼,右側為即時預覽
介面元件解析:
左側面板(程式碼編輯器):
-
具語法標記的文字編輯器
-
行號以利快速參考
-
自動完成支援
-
即時錯誤標記
右側面板(即時預覽):
-
即時視覺化渲染
-
平移與縮放控制
-
基於向量的顯示(任何縮放級別下皆清晰銳利)
-
點擊檢查元素
頂部工具列:
-
引擎選擇器(Mermaid/PlantUML/Graphviz)
-
範本庫
-
匯出選項(SVG、PNG、PDF)
-
分享按鈕(產生永久網址)
-
設定與偏好設定
底部狀態列:
-
語法驗證狀態
-
字元計數
-
最後儲存時間戳記
-
鍵盤快捷鍵參考
核心工作流程原則:
撰寫程式碼 → 檢視即時預覽 → 微調 → 匯出/分享
這個即時回饋循環正是 VPasCode 強大的關鍵。無需點擊「渲染」按鈕,也不必等待編譯——只需在輸入時即可獲得純粹、即時的視覺回饋。
3. 掌握 Mermaid.js:流程圖與更多 {#mermaid-tutorial}
Mermaid.js 已成為開發者友善的圖形繪製事實標準。其語法直觀、易讀,非常適合與程式碼並存的文件。
教學 1:建立使用者驗證流程
讓我們建立一個實用的驗證流程圖,你可以在下一次衝程規劃中使用。
範例程式碼:

graph TD
A[使用者輸入憑證] --> B{格式有效?}
B -->|否| C[顯示驗證錯誤]
B -->|是| D[傳送至驗證服務]
C --> A
D --> E{憑證相符?}
E -->|否| F[回傳 401 未授權]
E -->|是| G[產生 JWT Token]
G --> H[將 Token 儲存於 HttpOnly Cookie]
H --> I[重新導向至主控台]
F --> A
style A fill:#e1f5ff,stroke:#0066cc
style I fill:#d4edda,stroke:#28a745
style F fill:#f8d7da,stroke:#dc3545
此範例展示:
-
決策節點(菱形,內含
{?}) -
方向性流程(
TD= 由上而下) -
自訂色彩樣式
-
自我參照迴圈
-
清晰的標註
教學 2:微服務架構圖
現在讓我們建立一個更複雜的系統架構圖,展示服務之間的關係。
範例程式碼:

graph LR
subgraph Client["客戶端層"]
Web[Web 應用程式<br/>React]
Mobile[行動應用程式<br/>Flutter]
end
subgraph API["API 閘道"]
Gateway[ Kong 閘道 ]
Auth[驗證服務]
Rate[速率限制器]
end
subgraph Services["業務服務"]
User[使用者服務]
Order[訂單服務]
Product[產品服務]
Payment[付款服務]
end
subgraph Data["資料層"]
UserDB[(使用者資料庫<br/>PostgreSQL)]
OrderDB[(訂單資料庫<br/>MongoDB)]
ProductDB[(產品資料庫<br/>PostgreSQL)]
Cache[(Redis 快取)]
end
Web --> Gateway
Mobile --> Gateway
Gateway --> Auth
Gateway --> Rate
Rate --> User
Rate --> Order
Rate --> Product
User --> UserDB
User --> Cache
Order --> OrderDB
Order --> Payment
Product --> ProductDB
Payment --> OrderDB
style Gateway fill:#ff6b6b,stroke:#c92a2a,color:white
style UserDB fill:#4ecdc4,stroke:#087f5b
style OrderDB fill:#4ecdc4,stroke:#087f5b
style ProductDB fill:#4ecdc4,stroke:#087f5b
style Cache fill:#ffe66d,stroke:#f08c00
關鍵概念:
-
子圖用於邏輯分組 -
LR用於從左到右的佈局 -
使用 的多行標籤
<br/> -
使用 的數據庫圓柱符號
[( )] -
複雜的路由與關係
教程 3:訂單處理的序列圖
序列圖對於理解組件之間的時間交互至關重要。
範例程式碼:

sequenceDiagram
autonumber
participant C as Customer
participant W as Web App
participant O as Order Service
participant P as Payment Service
participant I as Inventory Service
participant N as Notification Service
C->>W: Add items to cart
C->>W: Click "Checkout"
W->>O: POST /orders {items, shipping}
O->>I: Reserve inventory
I-->>O: Reservation confirmed
O->>P: Process payment
P-->>O: Payment successful
O->>O: Create order record
O->>N: Send order confirmation
N-->>C: Email confirmation
O-->>W: 201 Created {orderId}
W-->>C: Show success page
Note over O,P: Critical section<br/>must be transactional
rect rgba(200, 200, 0, 0.2)
O->>P: Charge card
P-->>O: Transaction ID
end
序列圖功能:
-
自動編號用於自動步驟編號 -
參與者宣告 -
->>用於同步呼叫 -
-->>用於回應 -
註解上方用於註解 -
矩形用於標示區塊
教學 4:衝程規劃甘特圖
Mermaid 也支援專案時間軸視覺化。
範例程式碼:

gantt
title 衝程 24 - 認證模組
dateFormat YYYY-MM-DD
axisFormat %m/%d
section 後端
設計 API 合約 :已完成, des1, 2024-06-01, 2d
實作 JWT 服務 :進行中, des2, 2024-06-03, 3d
資料庫遷移 : des3, 在 des2 之後, 2d
單元測試 : des4, 在 des3 之後, 2d
section 前端
登入元件 : front1, 2024-06-03, 3d
權杖管理 : front2, 在 front1 之後, 2d
受保護的路由 : front3, 在 front2 之後, 2d
section 整合
API 整合 : int1, 在 des4 之後, 2d
端到端測試 : int2, 在 int1 之後, 3d
安全審計 : int3, 在 int2 之後, 2d
4. PlantUML 深入探討:企業架構 {#plantuml-tutorial}
PlantUML 擅長正式 UML 圖表與企業架構文件。讓我們探索實際範例。
教學 1:電商平台元件圖
範例程式碼:

@startuml
!theme plain
skinparam backgroundColor #FFFFFF
skinparam componentStyle uml2
title "電商平台 - 元件架構"
package "展示層" {
[Web 前端] as Web
[行動應用程式] as Mobile
[管理員儀表板] as Admin
}
package "API 層" {
[API 閘道] as Gateway
[認證] as Auth
[速率限制器] as RateLimit
}
package "業務服務" {
[目錄服務] as Catalog
[訂單服務] as Order
[付款服務] as Payment
[運送服務] as Shipping
[通知服務] as Notify
}
package "資料層" {
database "產品資料庫" as ProdDB
database "訂單資料庫" as OrderDB
database "使用者資料庫" as UserDB
queue "訊息佇列" as MQ
}
Web --> Gateway
Mobile --> Gateway
Admin --> Gateway
Gateway --> Auth
Gateway --> RateLimit
Gateway --> Catalog
Gateway --> Order
Order --> Payment
Order --> Shipping
Order --> Notify
Catalog --> ProdDB
Order --> OrderDB
Auth --> UserDB
Payment ..> MQ : 發布事件
Shipping ..> MQ : 訂閱事件
Notify ..> MQ : 訂閱事件
@enduml

圖 3:顯示分層架構的 PlantUML 元件圖
教學 2:雲端基礎設施部署圖
範例程式碼:
教學 3:C4 模型 – 容器圖
C4 模型非常適合在多個抽象層級溝通軟體架構。
範例程式碼:

@startuml
!define AWS_COLOR FF9900
!define DOCKER_COLOR 0DB7ED
skinparam componentStyle uml2
skinparam backgroundColor #FAFAFA
標題「雲端部署架構」
套件「AWS 區域:us-east-1」{
套件「公用子網路」{
[CloudFront CDN] 作為 CDN
[應用程式負載平衡器] 作為 ALB #AWS_COLOR
}
套件「私有子網路 1」{
[網頁伺服器 1] 作為 Web1 #DOCKER_COLOR
[網頁伺服器 2] 作為 Web2 #DOCKER_COLOR
}
套件「私有子網路 2」{
[API 伺服器 1] 作為 API1 #DOCKER_COLOR
[API 伺服器 2] 作為 API2 #DOCKER_COLOR
}
套件「資料層」{
資料庫「RDS 主節點」作為 RDS1 #AWS_COLOR
資料庫「RDS 複本」作為 RDS2 #AWS_COLOR
[ElastiCache Redis] 作為快取 #AWS_COLOR
}
套件「儲存」{
[S3 儲存桶] 作為 S3 #AWS_COLOR
[EFS 共用儲存] 作為 EFS #AWS_COLOR
}
}
網際網路 –> CDN
CDN –> ALB
ALB –> Web1
ALB –> Web2
Web1 –> API1
Web1 –> API2
Web2 –> API1
Web2 –> API2
API1 –> RDS1
API2 –> RDS1
RDS1 -[虛線]> RDS2
API1 –> 快取
API2 –> 快取
API1 –> S3
API2 –> S3
Web1 –> EFS
Web2 –> EFS
@enduml
教學 4:工作流程活動圖
範例程式碼:

@startuml
|客戶|
開始
:瀏覽商品;
:加入購物車;
:前往結帳;
|系統|
:驗證購物車項目;
:計算總金額;
if (有庫存?) then (是)
:保留庫存;
else (否)
:顯示缺貨;
結束
endif
|客戶|
:輸入送貨地址;
:選擇付款方式;
|系統|
:處理付款;
if (付款成功?) then (是)
:建立訂單;
:發送確認電子郵件;
:更新庫存;
else (否)
:顯示付款錯誤;
分離
endif
:出貨訂單;
:更新訂單狀態;
結束
分割區「背景作業」{
:產生發票;
:通知倉庫;
}
@enduml
5. Graphviz 基礎:複雜網路視覺化 {#graphviz-tutorial}
Graphviz(DOT 語言)擅長視覺化複雜關係與網路拓撲,其中佈局演算法至關重要。
教學 1:微服務相依性圖
範例程式碼:

圖 4:顯示微服務相依性與資料流程的 Graphviz 視覺化圖
digraph MicroservicesDependencies {
rankdir=TB;
node [shape=box, style="rounded,filled", fontname="Arial"];
edge [fontname="Arial", fontsize=10];
// 節點定義與顏色
node [fillcolor="#e3f2fd"];
"API Gateway" [fillcolor="#ffcdd2"];
"Service Mesh" [fillcolor="#fff9c4"];
// 核心服務
"User Service";
"Auth Service";
"Order Service";
"Payment Service";
"Inventory Service";
"Notification Service";
"Analytics Service";
// 資料庫
node [shape=cylinder, fillcolor="#c8e6c9"];
"User DB";
"Order DB";
"Product DB";
"Analytics DB";
// 外部服務
node [shape=box, fillcolor="#f3e5f5", style="dashed,filled"];
"Payment Gateway";
"Email Service";
"SMS Service";
// 關聯關係
"API Gateway" -> "Service Mesh";
"Service Mesh" -> "User Service";
"Service Mesh" -> "Auth Service";
"Service Mesh" -> "Order Service";
"Service Mesh" -> "Payment Service";
"Service Mesh" -> "Inventory Service";
"User Service" -> "User DB";
"Auth Service" -> "User DB";
"Order Service" -> "Order DB";
"Order Service" -> "Inventory Service";
"Order Service" -> "Payment Service";
"Inventory Service" -> "Product DB";
"Payment Service" -> "Payment Gateway";
"Notification Service" -> "Email Service";
"Notification Service" -> "SMS Service";
"Analytics Service" -> "Analytics DB";
"Order Service" -> "Notification Service" [style=dashed];
"Payment Service" -> "Notification Service" [style=dashed];
// 用於分組的子圖
{
rank=same;
"User Service";
"Auth Service";
}
{
rank=same;
"Order Service";
"Payment Service";
"Inventory Service";
}
} 教學 2:組織階層
範例程式碼:

digraph OrgChart {
rankdir=TB;
node [shape=box, style="rounded,filled", fontname="Helvetica"];
edge [fontname="Helvetica", arrowsize=0.7];
// 高階管理層
CEO [label="執行長nJohn Smith", fillcolor="#1976d2", fontcolor="white"];
// C 級主管
subgraph cluster_exec {
label="管理團隊";
style=dashed;
color="#90caf9";
CTO [label="技術長nSarah Johnson", fillcolor="#42a5f5"];
CFO [label="財務長nMichael Brown", fillcolor="#42a5f5"];
COO [label="營運長nEmily Davis", fillcolor="#42a5f5"];
CPO [label":"產品長nDavid Wilson", fillcolor="#42a5f5"];
}
// 工程部門
subgraph cluster_eng {
label="工程部門";
style=filled;
color="#e3f2fd";
VP_Eng [label="工程副總裁", fillcolor="#64b5f6"];
subgraph cluster_eng_teams {
label="團隊";
style=dotted;
Backend [label="後端團隊n(12 位工程師)", fillcolor="#bbdefb"];
Frontend [label="前端團隊n(8 位工程師)", fillcolor="#bbdefb"];
DevOps [label="DevOps 團隊n(5 位工程師)", fillcolor="#bbdefb"];
QA [label="品質保證團隊n(6 位工程師)", fillcolor="#bbdefb"];
}
}
// 產品部門
subgraph cluster_product {
label="產品部門";
style=filled;
color="#fff3e0";
VP_Product [label="產品副總裁", fillcolor="#ffb74d"];
PM1 [label="產品經理n平台", fillcolor="#ffcc80"];
PM2 [label="產品經理n行動", fillcolor="#ffcc80"];
PM3 [label="產品經理n分析", fillcolor="#ffcc80"];
}
// 關聯關係
CEO -> CTO;
CEO -> CFO;
CEO -> COO;
CEO -> CPO;
CTO -> VP_Eng;
VP_Eng -> Backend;
VP_Eng -> Frontend;
VP_Eng -> DevOps;
VP_Eng -> QA;
CPO -> VP_Product;
VP_Product -> PM1;
VP_Product -> PM2;
VP_Product -> PM3;
// 虛線表示協作關係
PM1 -> Backend [style=dotted, color="#757575"];
PM2 -> Frontend [style=dotted, color="#757575"];
PM3 -> Backend [style=dotted, color="#757575"];
} 教學 3:資料流程圖
範例程式碼:

digraph DataFlow {
rankdir=LR;
nodesep=1.0;
node [shape=ellipse, style="filled", fontname="Arial"];
edge [fontname="Arial", fontsize=9];
// 外部實體
node [fillcolor="#ffccbc", shape=box];
Customer [label="客戶"];
Vendor [label="供應商"];
Bank [label="銀行系統"];
// 處理程序
node [fillcolor="#c5cae9", shape=circle];
P1 [label="下單"];
P2 [label="處理付款"];
P3 [label="更新庫存"];
P4 [label="產生發票"];
P5 [label="出貨"];
P6 [label="發送通知"];
// 資料儲存
node [fillcolor="#c8e6c9", shape=box3d];
D1 [label="訂單資料庫"];
D2 [label="庫存資料庫"];
D3 [label="客戶資料庫"];
D4 [label="發票記錄"];
// 資料流程
Customer -> P1 [label="訂單請求"];
P1 -> D1 [label="儲存訂單"];
P1 -> D3 [label="更新客戶資料"];
P1 -> P2 [label="付款詳情"];
P2 -> Bank [label="付款請求"];
Bank -> P2 [label="付款確認"];
P2 -> P3 [label="付款成功"];
P3 -> D2 [label="減少庫存"];
P3 -> P4 [label="訂單確認"];
P4 -> D4 [label="儲存發票"];
P4 -> P6 [label="發票資料"];
P3 -> P5 [label="出貨請求"];
P5 -> Vendor [label="運送標籤"];
P5 -> P6 [label="追蹤資訊"];
P6 -> Customer [label="訂單確認n+ 追蹤資訊"];
// 虛線表示查詢動作
D1 -> P5 [label="取得訂單詳情", style=dashed];
D2 -> P1 [label="檢查庫存可用性", style=dashed];
D3 -> P1 [label="取得客戶資訊", style=dashed];
} 6. 實際應用實作模式 {#implementation-patterns}
模式 1:CI/CD 流程文件
範例程式碼(Mermaid):

graph LR
subgraph Source["源控制"]
Git[GitHub 儲存庫]
PR[拉取請求]
end
subgraph CI["持續整合"]
Lint[程式碼檢查]
Test[單元測試]
Build[建置產出]
Scan[安全掃描]
end
subgraph CD["持續部署"]
Dev[部署至開發環境]
Stage[部署至預設環境]
E2E[端到端測試]
Prod[部署至生產環境]
end
subgraph Monitor["監控"]
Logs[日誌聚合]
Metrics[指標儀表板]
Alerts[告警系統]
end
Git --> PR
PR --> Lint
Lint --> Test
Test --> Build
Build --> Scan
Scan --> Dev
Dev --> Stage
Stage --> E2E
E2E --> Prod
Prod --> Logs
Prod --> Metrics
Metrics --> Alerts
style Git fill:#f0f0f0,stroke:#333
style Prod fill:#d4edda,stroke:#28a745,color:black
style Alerts fill:#f8d7da,stroke:#dc3545,color:black
模式 2:資料庫結構設計
範例程式碼 (PlantUML):

圖 5:展示電子商務資料庫結構的實體關係圖
@startuml
!define TABLE(name) entity name << (T,#FFAAAA) >>
!define PK(x) x <<PK>>
!define FK(x) x <<FK>>
TABLE(Users) {
PK(user_id) : INT
--
email : VARCHAR(255)
password_hash : VARCHAR(255)
created_at : TIMESTAMP
last_login : TIMESTAMP
status : ENUM
}
TABLE(Products) {
PK(product_id) : INT
--
sku : VARCHAR(50)
name : VARCHAR(255)
description : TEXT
price : DECIMAL(10,2)
stock_quantity : INT
category_id : INT
}
TABLE(Categories) {
PK(category_id) : INT
--
name : VARCHAR(100)
parent_id : INT
}
TABLE(Orders) {
PK(order_id) : INT
--
FK(user_id) : INT
order_date : TIMESTAMP
total_amount : DECIMAL(10,2)
status : ENUM
shipping_address : TEXT
}
TABLE(OrderItems) {
PK(item_id) : INT
--
FK(order_id) : INT
FK(product_id) : INT
quantity : INT
unit_price : DECIMAL(10,2)
}
TABLE(Payments) {
PK(payment_id) : INT
--
FK(order_id) : INT
payment_method : ENUM
transaction_id : VARCHAR(255)
amount : DECIMAL(10,2)
status : ENUM
processed_at : TIMESTAMP
}
Users ||--o{ Orders : places
Orders }o--|{ Users : belongs_to
Orders ||--|{ OrderItems : contains
OrderItems }o--|| Products : references
Products }o--|| Categories : categorized_in
Orders ||--o{ Payments : paid_by
note right of Users
儲存客戶帳戶
與認證資料
end note
note left of Orders
主要交易記錄
含運送詳情
end note
@enduml
模式 3:基礎設施即程式碼視覺化
範例程式碼 (美人魚):
graph TB
subgraph AWS["AWS 雲端基礎設施"]
direction TB
subgraph Networking["網路"]
VPC[VPC 10.0.0.0/16]
IGW[網際網路閘道器]
NAT[NAT 閘道器]
subgraph Public["公用子網路"]
ALB[應用程式負載平衡器]
Bastion[堡壘主機]
end
subgraph Private["私有子網路"]
subgraph AppTier["應用層"]
ECS1[ECS 任務 1]
ECS2[ECS 任務 2]
ECS3[ECS 任務 3]
end
subgraph DataTier["資料層"]
RDS[RDS PostgreSQL<br/>多可用區]
Redis[ElastiCache Redis]
end
end
end
subgraph Storage["儲存"]
S3[S3 儲存桶<br/>資產與備份]
EFS[EFS 共用儲存]
end
subgraph Security["安全"]
WAF[WAF 規則]
SG[安全群組]
IAM[IAM 角色]
end
subgraph Monitoring["監控與記錄"]
CW[CloudWatch]
XRay[AWS X-Ray]
SNS[SNS 通知]
end
end
User[終端使用者] --> CloudFront[CloudFront CDN]
CloudFront --> WAF
WAF --> ALB
ALB --> ECS1
ALB --> ECS2
ALB --> ECS3
ECS1 --> RDS
ECS2 --> RDS
ECS3 --> RDS
ECS1 --> Redis
ECS2 --> Redis
ECS3 --> Redis
ECS1 --> S3
ECS2 --> S3
ECS3 --> S3
ECS1 --> EFS
ECS2 --> EFS
ECS3 --> EFS
ECS1 --> CW
ECS2 --> CW
ECS3 --> CW
RDS --> CW
Redis --> CW
CW --> SNS
style VPC fill:#f9f9f9,stroke:#333,stroke-width:2px
style ALB fill:#ff9900,stroke:#cc7a00,color:white
style RDS fill:#2e73b8,stroke:#1a4d80,color:white
style User fill:#95a5a6,stroke:#7f8c8d

圖 6:AWS 雲端基礎設施架構圖
7. 進階技巧:樣式與自訂化 {#advanced-techniques}
美人魚進階樣式
主題自訂化:

%%{init: {'theme':'base', 'themeVariables': {
'primaryColor': '#4CAF50',
'primaryTextColor': '#fff',
'primaryBorderColor': '#388E3C',
'lineColor': '#757575',
'secondaryColor': '#FFC107',
'tertiaryColor': '#fff'
}}}%%
graph TD
A[開始] --> B{決策}
B -->|是| C[處理 A]
B -->|否| D[處理 B]
C --> E[結束]
D --> E
style A fill:#2196F3,stroke:#1976D2,color:white
style E fill:#F44336,stroke:#D32F2F,color:white
PlantUML 皮膚參數
專業樣式:

@startuml
' 全域樣式
skinparam backgroundColor #FFFFFF
skinparam shadowing false
skinparam roundcorner 10
skinparam linetype ortho
' 元件樣式
skinparam component {
BackgroundColor #E3F2FD
BorderColor #1976D2
ArrowColor #1976D2
}
' 套件樣式
skinparam package {
BackgroundColor #FFF3E0
BorderColor #F57C00
FontSize 14
}
' 註解樣式
skinparam note {
BackgroundColor #F1F8E9
BorderColor #689F38
FontColor #33691E
}
package "前端" {
component [React 應用程式]
component [Redux Store]
}
package "後端" {
component [Node.js API]
component [Express Server]
database [MongoDB]
}
[React 應用程式] --> [Redux Store]
[Redux Store] --> [Node.js API]
[Node.js API] --> [Express Server]
[Express Server] --> [MongoDB]
note right of [Redux Store]
整個應用程式的集中式狀態管理
end note
@enduml
Graphviz 進階屬性
專業網路圖:

digraph AdvancedStyling {
// 全域圖形屬性
graph [
bgcolor="#f8f9fa"
fontname="Helvetica"
fontsize=16
label="企業系統架構n生產環境"
labelloc="t"
pad=0.5
ranksep=1.5
nodesep=1.0
];
// 預設節點屬性
node [
fontname="Helvetica"
fontsize=11
style="filled,rounded"
penwidth=2
];
// 預設邊屬性
edge [
fontname="Helvetica"
fontsize=9
penwidth=1.5
arrowsize=0.8
];
// 自訂樣式的節點叢集
subgraph cluster_presentation {
label="展示層";
style=filled;
color="#e3f2fd";
fontcolor="#1565c0";
Web [label="Web 應用程式<br/>React 18", fillcolor="#64b5f6", fontcolor="white"];
Mobile [label="行動應用程式<br/>Flutter", fillcolor="#64b5f6", fontcolor="white"];
}
subgraph cluster_business {
label="業務邏輯層";
style=filled;
color="#fff3e0";
fontcolor="#e65100";
API [label="REST API<br/>Node.js", fillcolor="#ffb74d", fontcolor="black"];
GraphQL [label="GraphQL Gateway", fillcolor="#ffb74d", fontcolor="black"];
}
subgraph cluster_data {
label="資料層";
style=filled;
color="#e8f5e9";
fontcolor="#2e7d32";
Primary [label="主要資料庫<br/>PostgreSQL 14", shape=cylinder, fillcolor="#a5d6a7"];
Replica [label="唯讀複本<br/>PostgreSQL 14", shape=cylinder, fillcolor="#c8e6c9"];
Cache [label="Redis 快取<br/>叢集模式", shape=cylinder, fillcolor="#c8e6c9"];
}
// 自訂樣式的邊
Web -> API [label="HTTPS/REST", color="#1976d2", fontcolor="#1976d2"];
Mobile -> API [label="HTTPS/REST", color="#1976d2", fontcolor="#1976d2"];
Web -> GraphQL [label="WebSocket", color="#1976d2", fontcolor="#1976d2", style=dashed];
API -> Primary [label="讀/寫", color="#388e3c", fontcolor="#388e3c"];
API -> Cache [label="快取", color="#f57c00", fontcolor="#f57c00", style=dashed];
GraphQL -> Replica [label="唯讀", color="#388e3c", fontcolor="#388e3c"];
Primary -> Replica [label="串流複寫", color="#757575", style=dotted];
}
8. 協作與分享工作流程 {#collaboration}
建立可分享的圖形
逐步分享:
-
產生分享連結:
-
點擊 VPasCode 中的「分享」按鈕
-
複製生成的 URL
-
透過電子郵件、Slack 或文件分享
-
-
嵌入文件:
## 系統架構  或嵌入互動版本: <iframe src="https://www.vpascode.com/embed/abc123xyz" width="100%" height="600"></iframe> -
匯出用於簡報:
-
SVG 用於可縮放網頁圖形
-
PNG (300 DPI) 用於 PowerPoint/Keynote
-
PDF 用於列印文件
-
版本控制整合
將圖形程式碼儲存於 Git:
project-root/
├── docs/
│ ├── diagrams/
│ │ ├── architecture/
│ │ │ ├── system-overview.puml
│ │ │ ├── deployment-view.puml
│ │ │ └── data-flow.mmd
│ │ ├── processes/
│ │ │ └── user-journey.mmd
│ │ └── infrastructure/
│ │ └── aws-architecture.dot
│ └── README.md
└── src/
Git 工作流程範例:
# 建立圖形
echo '@startuml
component "API Gateway"
@enduml' > docs/diagrams/architecture/gateway.puml
# 提交變更
git add docs/diagrams/architecture/gateway.puml
git commit -m "新增 API Gateway 架構圖"
git push
# 團隊成員現在可透過 VPasCode 檢視
# 方式為貼上程式碼或從 URL 載入
團隊協作模式
模式 1:架構決策記錄 (ADRs)
# ADR-007:微服務通訊模式
## 情境
我們需要標準化微服務之間的通訊方式。
## 決策
使用 RabbitMQ 進行非同步訊息傳遞,以實現服務間通訊。
## 架構圖
```mermaid
graph LR
A[服務 A] -->|發布| B[(RabbitMQ)]
B -->|訂閱| C[服務 B]
B -->|訂閱| D[服務 C]
後果
-
改善解耦
-
提升可擴展性
-
訊息處理的複雜度增加
**模式 2:衝程規劃文件**
建立隨衝程演進的動態圖形:

graph TD
subgraph Sprint24["衝程 24 - 進行中"]
Done[✅ 已完成任務]
InProgress[🔄 進行中]
ToDo[📋 待辦事項]
Blocked[⛔ 已阻塞]
end
Done --> Task1[使用者驗證模組]
Done --> Task2[資料庫遷移]
InProgress --> Task3[API 開發]
InProgress --> Task4[前端整合]
ToDo --> Task5[單元測試]
ToDo --> Task6[文件編寫]
Blocked --> Task7[第三方整合]
style Done fill:#d4edda,stroke:#28a745
style InProgress fill:#fff3cd,stroke:#ffc107
style ToDo fill:#e2e3e5,stroke:#6c757d
style Blocked fill:#f8d7da,stroke:#dc3545
結論:邁向文件卓越的旅程
恭喜!您已完成透過 VPasCode 與圖形即程式碼方法的全面旅程。讓我們回顧所學內容,並規劃未來的路徑。
您已掌握的內容
在本教程中,您已發現:
-
文字式圖形的力量:您已了解撰寫程式碼來建立圖形如何消除手動定位的摩擦、確保一致性,並使文件更易於維護。
-
三種產業標準引擎:您現在已具備以下實用技能:
-
Mermaid.js 用於開發者友善的流程圖與現代化文件
-
PlantUML 用於企業級 UML 與架構圖
-
Graphviz 用於複雜的網路拓撲與關係視覺化
-
-
真實世界模式:從微服務架構到資料庫結構、CI/CD 流程到組織圖表——您已學會視覺化幾乎任何系統或流程。
-
協作工作流:您了解如何透過 URL 分享圖表、將其嵌入文件、整合版本控制,並在 CI/CD 流程中自動化生成。
-
專業樣式設計:您可以建立出版級別的視覺效果,包含自訂主題、一致的企業識別,以及針對不同受眾的適當細節層級。
更宏觀的視野
讓 VPasCode 真正具有變革性的,不僅是工具本身,而是它所代表的範式轉移。將圖表視為程式碼,您將能夠:
-
填補差距 在實作與文件之間
-
普及架構設計 讓團隊中的每個人都能輕鬆參與
-
確保知識的未來適用性 透過基於文字且具版本控制的產出
-
加速新進人員培訓 透過清晰且可執行的文件
-
減少技術債 讓更新變得如同編輯文字般簡單
您的下一步
第一週:從小處著手
-
選擇您組織中現有的其中一張圖表
-
使用您偏好的引擎在 VPasCode 中重新建立該圖表
-
與同事分享並收集回饋
-
將程式碼儲存至您的專案儲存庫
第 2-3 週:建立動能
-
為團隊常見的圖表類型建立範本
-
制定命名慣例與風格指南
-
將圖表審查整合至您的程式碼審查流程中
-
記錄您的「圖表即程式碼」工作流程
第 2 個月:擴展與自動化
-
設定 CI/CD 整合以實現圖表自動生成
-
為您的組織建立圖表庫
-
培訓團隊成員掌握該工作流程
-
衡量節省的時間與文件品質的提升
第 3 個月起:將其融入文化
-
在架構決策中倡導圖表即程式碼
-
與領導層分享成功案例
-
將範本回饋給社群
-
探索進階功能,例如 AI 輔助圖表生成
競爭優勢
掌握圖表即程式碼的組織將獲得顯著優勢:
✅ 更快速的決策: 清晰的視覺呈現加速理解與共識達成
✅ 縮短新進人員培訓時間: 新進工程師透過可執行的文件更快地掌握系統
✅ 更佳的利害關係人溝通: 專業圖表連結技術與商業觀點
✅ 降低維護負擔: 更新文字比重新繪製視覺內容更快
✅ 提升程式碼品質: 繪製圖表的行為能及早發現架構問題
加入這場運動
您現在已成為一個不斷成長的開發者、架構師與團隊社群的一份子,大家認同文件工作不該成為負擔。透過 VPasCode,您擁有將文件轉化為資產的工具——一個與您的程式碼同步演進、充滿生命力的系統呈現。
最後的思考
將圖表視為程式碼的最佳時機是昨天,次佳時機就是現在。
未來的您,以及未來的團隊夥伴,將會感謝您帶來的清晰、一致與信心,這一切源於那份始終保持最新、隨時可存取且準確無誤的文件。
準備開始了嗎? 前往 VPasCode 現在就將您的第一份圖表程式碼貼上,見證文字轉化為清晰圖表。在讀完這段結尾所需的時間內,您就能建立您的第一個「圖表即程式碼」產出。
技術文件工作的未來已到來。它由程式碼驅動、基於瀏覽器,且完全免費。歡迎加入這場革命。
關於本教學
本綜合指南旨在協助開發團隊透過「圖表即程式碼」現代化其文件工作流程。VPasCode 建立在 Visual Paradigm 二十年企業架構專業經驗的基礎之上,代表技術溝通的未來——易於存取、可維護且免費。
最後更新:2026 年 6 月
目標受眾:軟體開發人員、系統架構師、DevOps 工程師、技術撰寫人員及開發團隊
先備知識:對軟體架構概念有基本了解
預估完成時間:完整教學需 2-3 小時,快速入門需 15 分鐘
快樂繪圖!🎨📊











