



























直接结论:Vite/Rsbuild 环境下,优先 Shiki(构建时),其次 Prism(客户端),最后考虑 highlight.js。
详细对比:
| 维度 | Shiki | Prism.js | highlight.js |
|---|---|---|---|
| 主题美观度 | ⭐⭐⭐⭐⭐ VS Code 同款 | ⭐⭐⭐ 基础主题 | ⭐⭐ 较朴素 |
| 语法准确性 | ⭐⭐⭐⭐⭐ TextMate 引擎 | ⭐⭐⭐ 正则匹配 | ⭐⭐ 易误判 |
| 客户端体积 | ⭐ 大(200KB+) | ⭐⭐⭐ 中(~15KB+语言) | ⭐⭐⭐⭐⭐ 小(~6KB+语言) |
| 构建时支持 | ⭐⭐⭐⭐⭐ 完美 | ⭐⭐ 需插件 | ⭐⭐ 需插件 |
| React 生态 | ⭐⭐⭐⭐ MDX 首选 | ⭐⭐⭐⭐ 组件丰富 | ⭐⭐⭐ 需封装 |
用 unplugin-shiki 或 rehype-pretty-code,构建阶段直接生成高亮 HTML:
// vite.config.ts
import Shiki from 'unplugin-shiki/vite'
export default {
plugins: [
Shiki({ theme: 'dracula' }) // 构建时转换,0 运行时开销
]
}
优势:浏览器不收高亮库代码,秒开无闪烁,SEO 完美。
如果只是一个简单的 <pre> 代码展示,不需要行号、复制按钮等复杂功能:
import hljs from 'highlight.js/lib/core'
import typescript from 'highlight.js/lib/languages/typescript'
hljs.registerLanguage('typescript', typescript)
// 体积最小,够用就行
别在 Vite 里客户端跑完整版 Shiki(除非必须):
Prism 在 Rsbuild 里的坑:
Rsbuild 默认开启代码压缩,Prism 的按需加载语法(import 'prismjs/components/...')有时会 tree-shaking 出错,建议用 babel-plugin-prismjs 显式配置语言。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。