留言格式支援
你可以在留言中新增多樣化的內容,包括經過擴充的 Markdown 語法與 HTML 標籤。
格式支援
我們支援完整的 CommonMark (標準 Markdown 語法),同時支援以下擴充:
- GFM 風格的表格
- GFM 風格的刪除線
- 上下標
- Emoji 表情符號
- 程式碼區塊語法高亮
公式
GFM
Github Flavored Markdown,即 Github 風格語法
同時,你可以在不觸發 保護機制 的情況下自由嵌入任何的 HTML 內容。
有限的預覽支援
為了控制客戶端體積,我們僅在官方客戶端 @waline/client 放置了小體積的 Markdown 解析器,這導致很多語法並不能在預覽面板內正確顯示 (它們可以正確地渲染在留言區)。
這包含如下限制:
標準的 emoji 語法 (如 🎉
:tada:) 無法正確渲染上下標 (如:
H~2~O、x^2^) 無法正確渲染 語法,也就是數學公式 (如:$a = 1$) 預設無法渲染。在官方客戶端下,你可以透過設定
texRenderer選項來設定預覽時的 渲染,參見 Cookbook → 使用自訂 TeX 渲染器。在預設的高亮器下,程式碼區塊將透過特定分隔符號使用隨機色彩進行高亮。
在官方客戶端下,你可以透過設定
highlighter選項來設定預覽時的程式碼高亮,參見 Cookbook → 自訂程式碼高亮。
更多
運作原理
考量體積問題,客戶端使用
marked進行渲染並預設使用 < 1kb 的高亮器進行高亮,同時不包含 渲染器,導致以上限制。使用者提交留言時,客戶端嵌入自訂 Emoji 表情符號圖片,並將留言原文傳送到伺服器。
伺服器接收到原文,使用
markdown-it以相關外掛對 markdown 進行正確的渲染,同時使用prism.js為程式碼區塊根據語言進行高亮,並按照使用者設定進行 渲染,最後執行 XSS 處理。處理完成後,伺服器會將正確的渲染內容進行儲存,並在需要時回傳給客戶端,確保留言區正常顯示。
