Skip to content

Syntax Highlight 方案概览 ​

1. 方案清单 ​

1.1 浏览器运行时方案(客户端 JS 高亮) ​

方案Stars语言支持特点
highlight.js24,994190+老牌方案,核心优势是语言自动检测(不知道语言时也能猜);发版活跃(11.12.0,2026-08)
Prism.js13,038290+轻量、插件生态丰富(行高亮、复制按钮等),Docusaurus 等文档站默认;发版放缓(v1.30 为 2025-03)

1.2 构建期方案(SSG / Markdown 生态,当前主流方向) ​

方案Stars特点
Shiki13,819现代文档站事实标准:复用 VS Code 的 TextMate 语法 + 主题,构建期生成静态 HTML/CSS,运行时零 JS;VitePress、Astro、Nuxt、Starlight、Rspress 内置。发版活跃(v4.4.3,2026-08)

1.3 编辑器级方案(不止高亮,完整编辑体验) ​

方案Stars特点
Monaco Editor46,781VS Code 同款编辑器,重量级,适合在线 IDE
CodeMirror 6模块化、移动端友好,适合可编辑代码块
tree-sitter27,000增量解析框架,真语法树而非正则,Neovim/Zed/GitHub 代码浏览都在用

* codemirror/dev 是开发 monorepo,入口包为 npm 的 codemirror(6.x)。

1.4 非 JS 生态 ​

方案Stars生态
Chroma5,038Go,Hugo 默认
Rouge3,450Ruby,Jekyll/GitHub Pages 默认
Pygments2,208Python,Sphinx/MkDocs 默认

2. Shiki 官方 integrations 与 SSG 的对应关系 ​

Shiki 文档列出的 integrations 大多是插件/工具库(markdown-it、rehype、Monaco、Twoslash、transformers、colorized-brackets、magic-move、stream、codegen、CLI),其中能对应到 jamstack.org/generators 收录的站点生成器只有 4 个:

Shiki 集成(shiki.style)jamstack.org 显示 Stars语言
Next133,884JavaScript
Nuxt57,969JavaScript
Astro52,942JavaScript/TypeScript
VitePress15,553JavaScript

补充(用了 Shiki 但不在 Shiki 官方 integrations 列表中的 SSG):

  • Starlight(7,018 ⭐,基于 Astro,内置 Shiki)
  • rspress(1,879 ⭐,jamstack 页面标注为 Rust,实际是 MDX 生态)

3. 背景概念:SSG ​

SSG = Static Site Generator(静态站点生成器)。在构建时把所有页面预渲染成纯 HTML/CSS/JS 静态文件,浏览器直接拿到现成 HTML;相对的 SSR 是每次请求时服务器动态渲染,CSR 是浏览器下载 JS 后客户端渲染。

语法高亮中的"构建期方案"即指高亮发生在 SSG 生成静态 HTML 阶段:

Markdown 源文件
   ↓  SSG 构建(VitePress 等)
高亮发生在这一步:Shiki 在构建时把代码块染成带 <span style> 的静态 HTML
   ↓
输出纯静态 HTML → 用户浏览器直接展示,运行时 0 JS、0 高亮计算

SSG + Shiki 比"页面加载后浏览器再跑 highlight.js/Prism"性能好得多(无闪烁、无运行时开销),这是它成为文档站主流方案的原因。jamstack.org/generators 是收录各种 SSG 的目录。