掌握程式碼繪圖:現代開發團隊的完整 VPasCode 教程

引言:文檔革命由此開始

在快速變化的軟體開發世界中,我們都面臨一個令人不安的事實:我們的文檔幾乎總是過時我們花費了無數小時與拖放式繪圖工具搏鬥, painstakingly 對齊方框和箭頭,卻只看著我們精心製作的圖表在程式碼變更的瞬間變得過時。
但如果文檔能跟上開發的步伐呢?如果建立專業架構圖就像寫一個函數一樣簡單呢?
歡迎來到程式碼繪圖革命。本教程將引導您完成VPasCode,Visual Paradigm 的瀏覽器平台,徹底改變了團隊建立、分享和維護系統架構圖的方式。將圖表視為程式碼,您將發現如何在幾分鐘內(而非幾小時)產出出版級別的視覺圖表,同時確保您的文檔能與系統無縫同步演進。
無論您是記錄微服務的開發人員、向利害關係人展示架構的架構師,還是映射基礎設施的 DevOps 工程師,這份全面指南將賦予您掌握 VPasCode 的技能,提升團隊的文檔水平。


1. 快速入門:5 分鐘完成您的第一張圖表 {#getting-started}

無需安裝,無需設定,只需程式碼

VPasCode 最強大的功能之一是其零摩擦的入門體驗。無需安裝任何內容,無需建立帳戶,也無需複雜設定。讓我們現在就建立您的第一張圖表。
逐步快速開始:

  1. 前往 VPasCode:開啟瀏覽器並造訪https://www.vpascode.com/editor/

  2. 選擇您的引擎:從下拉選單中選擇:

    • Mermaid——最適合流程圖和現代文檔

    • PlantUML——最適合 UML 和企業架構

    • Graphviz——完美適用於複雜的網路拓撲結構

  3. 載入範本:點擊「範例」並選擇入門範本

  4. 編輯與預覽:修改左側面板中的程式碼;即時觀察右側圖表的更新

  5. 匯出或分享:以 SVG/PNG 格式下載,或複製可分享的網址

VPasCode:透過圖表即程式碼進行系統架構文件撰寫
圖 1:VPasCode 能將基於文字的程式碼即時轉換為專業架構圖


2. 了解 VPasCode 介面 {#interface}

在深入語法之前,讓我們先熟悉工作區。
VPasCode 的使用者介面——一款整合型文字轉圖表(或圖表即程式碼)編輯器
圖 2:雙面板 VPasCode 介面——左側為程式碼,右側為即時預覽

介面元件解析:

左側面板(程式碼編輯器):

  • 具語法標記的文字編輯器

  • 行號以利快速參考

  • 自動完成支援

  • 即時錯誤標記

右側面板(即時預覽):

  • 即時視覺化渲染

  • 平移與縮放控制

  • 基於向量的顯示(任何縮放級別下皆清晰銳利)

  • 點擊檢查元素

頂部工具列:

  • 引擎選擇器(Mermaid/PlantUML/Graphviz)

  • 範本庫

  • 匯出選項(SVG、PNG、PDF)

  • 分享按鈕(產生永久網址)

  • 設定與偏好設定

底部狀態列:

  • 語法驗證狀態

  • 字元計數

  • 最後儲存時間戳記

  • 鍵盤快捷鍵參考

核心工作流程原則:

撰寫程式碼 → 檢視即時預覽 → 微調 → 匯出/分享

這個即時回饋循環正是 VPasCode 強大的關鍵。無需點擊「渲染」按鈕,也不必等待編譯——只需在輸入時即可獲得純粹、即時的視覺回饋。


3. 掌握 Mermaid.js:流程圖與更多 {#mermaid-tutorial}

Mermaid.js 已成為開發者友善的圖形繪製事實標準。其語法直觀、易讀,非常適合與程式碼並存的文件。

教學 1:建立使用者驗證流程

讓我們建立一個實用的驗證流程圖,你可以在下一次衝程規劃中使用。
範例程式碼:

使用者驗證流程圖,展示憑證驗證、JWT 金鑰產生、儀表板重新導向,以及包含錯誤處理迴圈。

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:微服務架構圖

現在讓我們建立一個更複雜的系統架構圖,展示服務之間的關係。
範例程式碼:

微服務架構圖,展示客戶端層、API 閘道、業務服務與資料層,並包含 PostgreSQL、MongoDB 與 Redis 的連線。

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:訂單處理的序列圖

序列圖對於理解組件之間的時間交互至關重要。
範例程式碼:

序列圖,說明客戶、Web 應用程式、訂單服務、付款服務、庫存服務與通知服務之間的訂單處理流程。

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 也支援專案時間軸視覺化。
範例程式碼:

驗證模組第 24 次衝刺的甘特圖,顯示 6 月 1 日至 6 月 17 日期間後端、前端與整合團隊的時間軸任務。

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:電商平台元件圖

範例程式碼:

電商平台的分層架構圖,詳細說明表示層、API 層、業務服務層與資料層。

@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

PlantUML 元件圖
圖 3:顯示分層架構的 PlantUML 元件圖

教學 2:雲端基礎設施部署圖

範例程式碼:

教學 3:C4 模型 – 容器圖

C4 模型非常適合在多個抽象層級溝通軟體架構。
範例程式碼:

C4 模型容器圖,展示 AWS 雲端部署架構,包含公用與專用子網路、Web 伺服器、API 伺服器與儲存元件。
@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:微服務相依性圖

範例程式碼:

微服務相依性圖,展示 API 閘道、服務網格,以及連接到資料庫與外部閘道的服務。
圖 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:組織階層

範例程式碼:

組織層級圖,顯示執行長約翰·史密斯、高階管理團隊、產品副總裁與工程副總裁,分別領導後端、前端、品質保證與 DevOps 團隊。

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):

Mermaid 圖表,說明從原始碼控制經過持續整合、部署與監控的 CI/CD 管線工作流程。

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):

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}

美人魚進階樣式

主題自訂化:

流程圖展示 Mermaid 進階樣式,以不同顏色區分起始、決策、處理與結束狀態的圖形。

%%{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 皮膚參數

專業樣式:

前端 React 應用程式與 Redux 狀態儲存流向後端 Node.js API、Express 伺服器與 MongoDB,展示集中式狀態管理。

@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 進階屬性

專業網路圖:

企業系統架構圖,顯示呈現層、業務邏輯層與資料層,包含 Flutter、React、Node.js 與 PostgreSQL 元件。

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}

建立可分享的圖形

逐步分享:

  1. 產生分享連結:

    • 點擊 VPasCode 中的「分享」按鈕

    • 複製生成的 URL

    • 透過電子郵件、Slack 或文件分享

  2. 嵌入文件:

    ## 系統架構
    
    ![架構圖](https://www.vpascode.com/share/abc123xyz.svg)
    
    或嵌入互動版本:
    <iframe src="https://www.vpascode.com/embed/abc123xyz" width="100%" height="600"></iframe>
    
    
  3. 匯出用於簡報:

    • 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:衝程規劃文件**

建立隨衝程演進的動態圖形:

Sprint 24 看板,顯示已完成、進行中、待辦與阻塞的任務,例如使用者驗證模組、API 開發與第三方整合。

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 與圖形即程式碼方法的全面旅程。讓我們回顧所學內容,並規劃未來的路徑。

您已掌握的內容

在本教程中,您已發現:

  1. 文字式圖形的力量:您已了解撰寫程式碼來建立圖形如何消除手動定位的摩擦、確保一致性,並使文件更易於維護。

  2. 三種產業標準引擎:您現在已具備以下實用技能:

    • Mermaid.js 用於開發者友善的流程圖與現代化文件

    • PlantUML 用於企業級 UML 與架構圖

    • Graphviz 用於複雜的網路拓撲與關係視覺化

  3. 真實世界模式:從微服務架構到資料庫結構、CI/CD 流程到組織圖表——您已學會視覺化幾乎任何系統或流程。

  4. 協作工作流:您了解如何透過 URL 分享圖表、將其嵌入文件、整合版本控制,並在 CI/CD 流程中自動化生成。

  5. 專業樣式設計:您可以建立出版級別的視覺效果,包含自訂主題、一致的企業識別,以及針對不同受眾的適當細節層級。

更宏觀的視野

讓 VPasCode 真正具有變革性的,不僅是工具本身,而是它所代表的範式轉移。將圖表視為程式碼,您將能夠:

  • 填補差距 在實作與文件之間

  • 普及架構設計 讓團隊中的每個人都能輕鬆參與

  • 確保知識的未來適用性 透過基於文字且具版本控制的產出

  • 加速新進人員培訓 透過清晰且可執行的文件

  • 減少技術債 讓更新變得如同編輯文字般簡單

您的下一步

第一週:從小處著手

  • 選擇您組織中現有的其中一張圖表

  • 使用您偏好的引擎在 VPasCode 中重新建立該圖表

  • 與同事分享並收集回饋

  • 將程式碼儲存至您的專案儲存庫

第 2-3 週:建立動能

  • 為團隊常見的圖表類型建立範本

  • 制定命名慣例與風格指南

  • 將圖表審查整合至您的程式碼審查流程中

  • 記錄您的「圖表即程式碼」工作流程

第 2 個月:擴展與自動化

  • 設定 CI/CD 整合以實現圖表自動生成

  • 為您的組織建立圖表庫

  • 培訓團隊成員掌握該工作流程

  • 衡量節省的時間與文件品質的提升

第 3 個月起:將其融入文化

  • 在架構決策中倡導圖表即程式碼

  • 與領導層分享成功案例

  • 將範本回饋給社群

  • 探索進階功能,例如 AI 輔助圖表生成

競爭優勢

掌握圖表即程式碼的組織將獲得顯著優勢:
✅ 更快速的決策: 清晰的視覺呈現加速理解與共識達成
✅ 縮短新進人員培訓時間: 新進工程師透過可執行的文件更快地掌握系統
✅ 更佳的利害關係人溝通: 專業圖表連結技術與商業觀點
✅ 降低維護負擔: 更新文字比重新繪製視覺內容更快
✅ 提升程式碼品質: 繪製圖表的行為能及早發現架構問題

加入這場運動

您現在已成為一個不斷成長的開發者、架構師與團隊社群的一份子,大家認同文件工作不該成為負擔。透過 VPasCode,您擁有將文件轉化為資產的工具——一個與您的程式碼同步演進、充滿生命力的系統呈現。

最後的思考

將圖表視為程式碼的最佳時機是昨天,次佳時機就是現在。
未來的您,以及未來的團隊夥伴,將會感謝您帶來的清晰、一致與信心,這一切源於那份始終保持最新、隨時可存取且準確無誤的文件。
準備開始了嗎? 前往 VPasCode 現在就將您的第一份圖表程式碼貼上,見證文字轉化為清晰圖表。在讀完這段結尾所需的時間內,您就能建立您的第一個「圖表即程式碼」產出。
技術文件工作的未來已到來。它由程式碼驅動、基於瀏覽器,且完全免費。歡迎加入這場革命。


關於本教學
本綜合指南旨在協助開發團隊透過「圖表即程式碼」現代化其文件工作流程。VPasCode 建立在 Visual Paradigm 二十年企業架構專業經驗的基礎之上,代表技術溝通的未來——易於存取、可維護且免費。
最後更新:2026 年 6 月
目標受眾:軟體開發人員、系統架構師、DevOps 工程師、技術撰寫人員及開發團隊
先備知識:對軟體架構概念有基本了解
預估完成時間:完整教學需 2-3 小時,快速入門需 15 分鐘


快樂繪圖!🎨📊