1.1 什麼是Markdown?
Markdown是一種語法特別少、特別簡單的標記語言,用來編寫文檔。用Markdown編寫的文檔是純文本格式,通過編輯器的渲染,就會造成排 版優美的文檔,本文就是用Markdown編寫的。若是咱們使用Markdown來編寫文檔,就不用再像用Word那樣疲累於設置標題、縮進、左右對齊、 字體大小等煩雜的工做,而能夠徹底不考慮排版的事情,專心於寫做的內容。Markdown如今已經被普遍使用,一些科技博客的編輯器支持 Markdown,一些新興的寫做閱讀平臺,好比簡書,也支持Markdown,還有github上全部項目的README.md就是用Markdown 寫的。
1.2 什麼是UML時序圖?
UML時序圖是衆多UML圖中的一種,用圖形來表示某個系統中的時序關係。它經過描述對象之間發送消息的時間順序來顯示多個對象之間的交互關係。程序員設計模塊的時候,經常會畫UML時序圖來描述模塊中幾個對象的交互,以此來理清頭緒或者向人解說。
2. 爲何用Markdown來繪製UML時序圖?
繪製UML時序圖的方法有不少,Visio能夠繪製時序圖,還有一些網站也能夠繪製時序圖。可是用這些方式,須要大量的拖拖拽拽,勾勾連連,很費時間。若是用Markdown的話,只需用特別簡單易懂的幾個語法,很快就能夠描繪出時序圖。
3. 事先準備
Markdown編輯器。如下所列的Markdown編輯器都支持繪製UML時序圖,選取其中一個便可: 爲知筆記(爲知筆記建立Markdown筆記的方式比較特殊,請讀者自行查閱爲知筆記的幫助內容) 做業部落 CSDN博客編輯器 馬克飛象(收費)
4. 語法講解
上面列出的幾種編輯器支持的繪製UML時序圖的語法是同樣的,只是各編輯器用來標識時序圖部分的方法不盡相同。下面的標識方法是覺得知筆記爲準,其餘編輯器的標識方法請具體參考各編輯器的幫助說明。
4.1 標識時序圖
```sequence
```
4.2 建立Title
```sequence
title: Title
```
4.3 建立Actor
```sequence
participant A
participant B
participant C as C_Alias
```
git
建立了A、B、C三個Actor。其中C的建立中,as C_Alias表示給C起一個別名,叫C_Alias。
4.4 Actor的交互
```sequence
A->B: how are you?
B-->>A: fine.
```
程序員
->中,-表明實線,>表明實心箭頭,還能夠用--表示虛線,>>表示非實心箭頭。在UML時序圖中,實線表示主動發送消息,虛線表示返回(應答)消息,實心箭頭表示同步消息(消息發送者中止活動等待應答消息),非實心箭頭表示異步消息(消息發送者無須中止活動等待應答消息)。->兩邊能夠是同一個Actor,表示自交互:
```sequence
A->A: 心裏os
```
github
4.5 多個Actor的交互
```sequence
A->B: how are you, B?
B->C: how are you, C?
C->A: how are you, A?
```
4.6 給Actor添加Note
```sequence
Note right of A: I'm A
Note left of A: I'm A
Note over A: I'm A
Note over A, B: We're friends.
```
到此爲止,繪製UML時序圖的全部語法都講完了,不多吧。另外,查閱語法能夠看這張圖(引用自js-sequence-diagram項目):
下面,就讓咱們用Markdown畫一個實際的系統吧。
5. 用Markdown繪製典型的客戶端登陸時序圖
登錄流程大體是:用戶在客戶端輸入通行證的帳號密碼來登錄一個服務器,這裏不考慮第三方登錄,不考慮登錄失敗的狀況。
```sequence
participant 客戶端
participant 服務器
participant 通行證中心
Note over 客戶端: 用戶輸入通行證的帳號、密碼
客戶端->通行證中心: 發送帳號、密碼
Note over 通行證中心: 驗證帳號、密碼
通行證中心-->>客戶端: 返回token
客戶端->服務器: 發送token
服務器->通行證中心: 驗證token
通行證中心-->>服務器: 驗證成功
服務器-->>客戶端: 登錄成功
```
6. 限制
Markdown繪製UML時序圖雖然簡單、快速,可是缺乏對一些UML時序圖基本元素的支持,好比Focus of Control、Combined Fragments、對象的中途建立和對象的銷燬。因此當你須要添加一些循環或者分支結構的消息時,或者須要中途建立對象、中途銷燬對象 時,Markdown就不能知足你的要求了。不過,技術一直在進步,未來Markdown或許能畫出更復雜的時序圖來。服務器