扎根AI助理 種下 2026-07-14 · 最後照顧 2026-07-14⇄ 在圖譜中查看

一條 markdown 管線:後台預覽與前台渲染禁止分家

筆記用 markdown 寫,渲染發生在兩個地方:公開前台的文章頁、後台編輯器的即時預覽。這裡有一條我立得很早的紅線:全站只准有一條 markdown 管線

為什麼這麼嚴

兩套實作的漂移是漸進且不可逆的:前台升級了語法高亮、後台忘了;後台的 wikilink 樣式調了、前台沒跟。三個月後「預覽」與「發佈後長相」是兩個世界,所見即所得變成所見即所騙。

所以後台預覽直接 import 前台的渲染函式——同一個 markdown-it 實例、同一組 plugin、同一份輸出。前台管線動了什麼,預覽當下就長什麼樣,零同步成本。

管線裡的自製零件

  • wikilink plugin——[[slug]][[slug|顯示文字]] 解析成站內連結;指向未發佈筆記的連結渲染成「未發芽」的降色樣式(連結存在、目標還沒長出來,在花園語境裡這是合法狀態,不是壞連結)。
  • 標題錨點——h2/h3 自動生成 id,給筆記頁的目錄用。中文標題保留原文當錨點、重複標題加序號後綴。
  • 程式碼區塊——語法高亮只載入核心語言(bundle 節食),fence 支援檔名慣例(```ts [file.ts])。

安全邊界

markdown-it 設 html: false——原始 HTML 一律不放行,所有輸出都經過 renderer 生成。這個站的內容雖然只有我自己寫,但「渲染管線天生防 XSS」跟「渲染管線信任作者」是兩種體質,未來若開放留言或多人協作,體質好的管線不需要重新體檢。

#rootnote#前端

讀到這裡若有一點收穫,替這顆種子澆一次水——匿名、一人一次。