高频知识点
prismjs
prismjs
PrismJS 是一个轻量级、高性能的代码语法高亮 JavaScript 库,专为现代 web 设计。
它通过简单的标记为各种编程语言的代码块提供美观的高亮显示,支持自定义主题、插件扩展,并具有良好的浏览器兼容性。
1. GitHub 链接
2. 主要功能
(1)多语言支持
-
内置支持超过 100 种编程语言(JavaScript、Python、Java、HTML、CSS 等)。
-
示例:
1 2 3 4<pre><code class="language-javascript"> const greeting = "Hello, World!"; console.log(greeting); </code></pre>
(2)主题系统
-
提供多种内置主题(如 Okaidia、Tomorrow Night、Solarized)。
-
支持自定义 CSS 主题扩展。
(3)插件扩展
-
行号(Line Numbers):为代码添加行号。
-
高亮特定行(Line Highlight):突出显示指定行。
-
复制到剪贴板(Copy to Clipboard):添加复制按钮。
-
自动加载语言(Autoloader):按需加载语言语法文件。
(4)性能优化
-
基于令牌(token)的解析器,高效处理大型代码块。
-
支持懒加载未使用的语言语法。
(5)可访问性
-
生成语义化 HTML 结构,支持键盘导航。
-
高对比度颜色方案,符合 WCAG 标准。
3. 使用案例
(1)技术博客/文档
-
在博客文章中高亮代码示例:
1 2 3 4 5 6 7<pre><code class="language-python"> def fibonacci(n): a, b = 0, 1 for _ in range(n): yield a a, b = b, a + b </code></pre>
(2)代码编辑器预览
- 在在线代码编辑器中实时显示语法高亮。
(3)学习平台
- 在编程教学网站中展示示例代码。
4. 快速上手
(1)引入 PrismJS
|
|
(2)使用插件
-
添加行号:
1 2 3 4 5<pre class="line-numbers"><code class="language-css"> .selector { color: #333; } </code></pre>需额外引入插件 CSS 和 JS:
1 2<link href="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
5. 自定义配置
(1)创建自定义构建
- 通过 PrismJS 下载页面 选择需要的语言和插件,生成最小化版本。
(2)扩展语法
-
添加自定义语言规则:
1 2 3 4 5Prism.languages.my-custom-language = { 'comment': /\/\/.*/, 'string': /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, 'keyword': /\b(if|else|function|return)\b/ };
6. 注意事项
(1)性能考虑
- 避免在大型页面中加载所有语言语法,可使用懒加载插件。
(2)动态内容
- 对于动态加载的代码块,需手动调用 Prism.highlightAll() 触发高亮。
(3)浏览器兼容性
- 支持现代浏览器(Chrome、Firefox、Safari、Edge)及 IE 10+。
7. 替代方案
-
highlight.js:更全面的语言支持,自动检测语言。
-
Shiki:基于 VS Code 语法高亮引擎,支持深色/浅色主题切换。
-
CodeMirror:功能强大的代码编辑器,包含语法高亮功能。
8. 总结
PrismJS 是一个轻量级、美观且易于集成的代码高亮库,适合需要展示代码示例的网站和应用。其丰富的插件生态和简洁的 API 使其成为开发者的首选,但在处理大量动态内容或复杂语言时,可能需要考虑性能优化或其他替代方案。