您的位置:

Prismjs:一个高质量的语法高亮库

语法高亮在前端开发中扮演了重要的角色,常用来在博客、文档、代码分享平台中突出显示关键字和语法结构 ,以便更好地展示代码。Prismjs 是一个轻量级的、可扩展的、高质量的语法高亮库。

一、Prismjs框架

Prismjs 能够处理多种语言和文本格式, 如HTML、CSS、JavaScript、Markup 和 HTTP 等。它的核心包含了语法高亮和错误提示等基本功能,并提供了多种插件和主题,以供扩展和个性化定制。Prismjs框架的使用十分简单,只需要在html文件中引入prism.js, 并在需要高亮显示的块级元素中使用pre和code标签就行。


  <script src="prism.js"></script>
  
<hr/>
body { background-color: #fff; }
console.log("Hello, world!");

二、Prismjs代码美化仿mac

代码的视觉效果需要满足更高的要求,Prismjs 的可扩展性可以大大提高美化代码的效果。比如我们可以使用 “prism-material-themes” 模仿Mac的主题美化代码:


  <link href="prism-material-themes.min.css" rel="stylesheet" />
  <script src="prism.js"></script>

三、Prismjs行号

行号是更好的代码索引和辨识,在代码块前加入行号更是一大亮点,十分实用。Prismjs建议我们添加插件 “prism-line-numbers”,即可轻松实现行号:


  <link href="prism.css" rel="stylesheet" />
  <link href="prism-line-numbers.css" rel="stylesheet" />
  <script src="prism.js"></script>
  <script src="prism-line-numbers.js"></script>
  
console.log("This is a test.")

四、Prismjs特定语言

Prismjs支持许多具有语法结构的语言,例如我们可以使用 "prism-python" 插件支持Python语言:


  <link href="prism.css" rel="stylesheet" />
  <link href="prism-line-numbers.css" rel="stylesheet" />
  <link href="prism-python.css" rel="stylesheet" />
  <script src="prism.js"></script>
  <script src="prism-line-numbers.js"></script>
  <script src="prism-python.js"></script>
  
# This is a test.
print("Hello, World!")

五、Prismjs老是卡住

Prismjs使用起来很简单,但对于一些较大的代码块可能会导致读取闪烁或冻结的问题,这些问题可能会更加明显在旧版的浏览器中。为了解决这个问题,我们应该使用异步加载的方式初始化 Prismjs,并且懒加载代码模块,以免代码块过大导致初始化时卡顿。


  <script async src="prism.js"></script>
  
   

六、Prismjs和highlight

Prismjs 和 highlight.js 都是常用于代码高亮的js库,它们的技术实现和代码结构都很相似。但是,Prismjs比highlight.js具有更好的性能和更少的依赖关系,考虑到不同的实际情况,选择哪一种库是个人的决定。

七、Prismjs做自定义指令

Prismjs支持自定义指令,可用于扩展当前语法高亮的库。在代码块添加指令 data-prism-src 和 data-prism-async 可以自定义加载指定内容和异步加载。


  

  
   

八、Prismjs显示行号和语言

显示行号和语言需要在css中添加指定样式


  pre.line-numbers { position: relative; padding-left: 3.8em; counter-reset: linenumber; }
  pre.line-numbers > code { position: relative; }
  pre.line-numbers > code:before { content: counter(linenumber); counter-increment: linenumber; position: absolute; left: -3.6em; top: 0px; color: #ccc; font-size: 0.8em; }
  .token { font-weight: bold; color: #1e88e5; }
  .token.operator { color: #1e88e5; }
  .token.comment, .token.prolog, .token.doctype, .token.cdata { color: #1e88e5; }
  .token.string, .token.attr-value { color: #43a047; }
  .token.punctuation { color: #757575; }
  .language-css .token.property, .language-css .token.boolean, .language-css .token.number { color: #f4511e; }
  .language-css .token.selector { color: #9a4b9d; }
  .language-css .token.keyword { color: #1e88e5; }
  .token.tag .token.tag { color: #555; }

再次强调,Prismjs是一个轻量级的高质量的语法高亮库,它可以轻松地解决我们在项目中的编码高亮问题,并提供了丰富的扩展插件和主题,让我们可以更加方便地打造自己的代码美化。