1. 程式人生 > >markdown 中流程圖詳解

markdown 中流程圖詳解

目錄


   markdown有不同的外掛實現,對應的語法也不太一樣,對於外掛就是把引用的語法對應成相應的標籤,本文以CSDN中寫作為例進行分別對mermaid和flowchart進行例項說明和語法解釋。

1. Mermaid 流程圖

示例

	```mermaid
	graph TB
	A[Apple]-->B{Boy}
	A---C(Cat)
	B.->D((Dog))
	C==喵==>D
	style A fill:#2ff,fill-opacity:0.1,stroke:#faa,stroke-width:4px
	style D stroke:#000,stroke-width:8px;
	```

語法結構

	```mermaid
	graph 方向
	節點以及節點連線(定義和連線步驟可以分開)
	(樣式調整)
	```

顯示方向

  • TB/TD( top bottom/top down)表示從上到下
  • BT(bottom top)表示從下到上
  • RL(right left)表示從右到左
  • LR(left right)表示從左到右

節點型別

   節點本身的展現形式,是通過不同括號來代表各自不同的形狀,預設為矩形。

  • 預設節點: A
  • 矩形節點: B[矩形]
  • 圓角矩形節點: C(圓角矩形)
  • 圓形節點: D((圓形))
  • 非對稱節點: E>非對稱]
  • 菱形節點: F{菱形}

語法詳解

節點連線

   線條本身的形式有多種,通過常規的英文格式的格式來標識,具體如下:

  • 箭頭連線 A1- ->B1
  • 開放連線 A2- - -B2
  • 虛線箭頭連線 A3.->B3 或者 A3-.->B3
  • 虛線連線 A4.-B4 或者 A4-.-B4
  • 粗線箭頭連線 A5==>B5
  • 粗線開放連線 A6===B6
  • 標籤虛線箭頭連線 A7-.text.->B7
  • 標籤開放連線 A8- -text- - -B8
節點樣式

   樣式寫法跟向量圖(SVG)中CSS的寫法一致,含有的屬性有:

style 節點  樣式

2. Flowchart流程圖

示例

	```mermaid
	flowchat
	st=>start: 開始
	e=>end: 結束
	op1=>operation: 操作1 | past
	op2=>operation: 操作2 | current
	op3=>operation: 操作3 | future
	pa=>parallel: 多輸出操作4 | approved
	cond=>condition: 確認? | rejected
	
	st->op1->cond
	cond(true)->e	
	cond(no)->op2(right)->op3->pa(path1,right)->op1
	pa(path2,left) ->e
	[email protected]>op1({"stroke":"Blue"})@>cond({"stroke":"Green"})@>e({"stroke":"Red","stroke-width":6,"arrow-end":"classic-wide-long"})
	```

語法結構

	```mermaid
	flowchat
	定義節點
	連線節點
	(樣式調整)
	```

節點型別

  目前官網提供7種節點,其實還有很多別的節點型別,但可能外掛指令碼還沒支援。

  • 開始(橢圓形):start
  • 結束(橢圓形):end
  • 操作(矩形):operation
  • 多輸出操作(矩形):parallel
  • 條件判斷(菱形):condition
  • 輸入輸出(平行四邊形):inputoutput
  • 預處理/子程式(聖旨形):subroutine

語法詳解

節點定義
變數名=>節點標識: 節點顯示名
節點連線
變數名1->變數名2->...->變數名n
連線樣式

  設定變數m和變數n之間連線的樣式,具體樣式由變數n後面key-value控制,需要兩個變數之間有直接連線。語法中的連線符為(@>)。

變數名[email protected]>變數名n({"key":"value"})
關鍵字
  • yes/true:condition型別變數連線時,用於分別表示yes條件的流向
  • no/false:同上,表示否定條件的流向
  • left/right:表示連線出口在節點位置(預設下面是出口,如op3),可以跟condition變數一起用:cond(yes,right)
  • path1/path2/path3:parallel變數的三個出口路徑(預設下面是出口)
節點狀態

  為節點設定不同的狀態,可以通過不同的顏色顯示,其中狀態包括下面6個,含義如英文所示,不過CSDN中好像目前還不支援:

  • past
  • current
  • future
  • approved
  • rejected
  • invalid

3. 時序圖

示例

	```mermaid
	    sequenceDiagram
	    participant 張 as 張三
	    participant 李 as 李四
	    participant 王 as  王五   
	    張 ->> +李: 你好!李四, 最近怎麼樣?
	    李-->> 王: 你最近怎麼樣,王五?
	    李--x -張: 我很好,謝謝!
	    activate 王
	    李-x 王: 我很好,謝謝!   
	    Note over 李,王: 李四想了很長時間, 文字太長了<br/>不適合放在一行.
	    deactivate 王
	    loop 李四再想想
	    李-->>王: 我還要想想
	    王-->>李: 想想吧
	    end
	    李-->>張: 打量著王五...
	    張->>王: 很好... 王五, 你怎麼樣?
	```

語法結構

	```mermaid
	    sequenceDiagram
	    participant 別名 as 物件顯示名(全部直接用顯示名時可以不寫)
	    順序增加圖表中訊息
	    (可以加入標籤提示)
	```

語法詳解

訊息格式
【物件1】【箭頭型別】【物件2】 : 訊息內容
連線樣式

一共6種箭頭型別的樣式:

  • 實線:->
  • 虛線:- ->
  • 帶箭頭的實線:->>
  • 帶箭頭的虛線:- ->>
  • x的實線:-x
  • x的虛線:- -x
啟用方塊

  這部分有兩種寫法,第一種是顯示通過語法實現,語法如下,會在指定物件的訊息中增加,示例中李四;第二種直接在物件前面增加加減號(開始時用加號“+”,結束時用減號“-”),則在加號對應的物件上開始,減號對應的時間結束,示例中王五。

開始:activate 【物件】
結束:deactivate 【物件】
註釋
Note 【位置】 【物件】

註釋顯示的位置有三個,以被標記的物件中心為參考系,基於橫跨多個時,可以都逗號分隔,如示例:

  • right of
  • left of
  • over
迴圈(while)

見示例

loop 迴圈說明
【訊息流】
end
條件(if/else)
alt 條件說明
【訊息流】
else
【訊息流】
end
opt 條件說明
【訊息流】
end

示例內容太多了,為了防止太臃腫,把條件內容獨立出來進行演示,當有else時,用alt,否則用opt。

	```mermaid
	    sequenceDiagram
	    participant 張 as 張三
	    participant 李 as 李四
	    張 ->> 李: 你好!李四, 最近怎麼樣?
	    alt 如果感冒了
	    李->> 張: 不太好,生病了。
	    else 挺好的
	    李->> 張: 我很好,謝謝。
	    end
	        opt 另外補充
	        李->> 張: 謝謝問候。
	    end
	```

參考自:
https://mermaidjs.github.io/
http://flowchart.js.org/


歡迎關注我公眾號,為你增加看世界的維度。
真相很簡單