在编写代码时,代码的可读性对于程序员来说是非常重要的,因为代码的可读性能够有效提高代码的维护性和协作性。而语法高亮(Syntax Highlighting)是常用的提高代码可读性的一种方式,通过不同颜色或字体等方式,让代码中的不同元素能够以不同的形式凸显出来,让我们在浏览代码时更加方便和快捷。
本文将重点介绍一款优秀的语法高亮工具——SyntaxHighlighter,并讲解如何使用它来提高我们的代码可读性。
一、什么是SyntaxHighlighter?
SyntaxHighlighter,中文翻译为语法高亮器,它是一个开源的JavaScript语法高亮渲染引擎。SyntaxHighlighter 可以支持多种语言,包括 JavaScript、HTML、CSS、Java、C 和 Python 等常见语言,而且SyntaxHighlighter 不仅仅可以直接渲染HTML代码,也可以以JS插件的形式植入到网站中,方便我们进行代码的高亮展示。
SyntaxHighlighter的优点在于它所呈现的词法高亮风格与代码编辑器中的看起来非常相似,这种相似使用体验大大提高了代码阅读的舒适度,而且比如像 《Pro Git》《Head FirstHTML/CSS/JS》之类的在线书籍大多使用了SyntaxHighlighter 来展示代码。
二、SyntaxHighlighter的使用方法
1、下载SyntaxHighlighter
在使用SyntaxHighlighter之前,需要先下载相关插件。可以在Github上搜索到SyntaxHighlighter的项目,找到最新版的压缩包,下载后解压缩到本地。
2、引用SyntaxHighlighter JS、CSS 文件
在解压缩之后,我们可以看到解压缩出来的是一个文件夹,里面包含了js和css两个文件夹以及一个README.md文件。我们需要进入到 SyntaxHighlighter的相关文件夹下,分别在网页头部或者底部引用文件夹中的三个重要文件:shCore.css,shCore.js以及对应着语言的JS文件。其中shCore.css负责样式渲染,shCore.js负责代码解析和高亮,而语言的JS文件则负责对应语言的词法分析以及解析。
3、定义代码块
在网页中,我们需要给所有需要进行语法高亮展示的代码块添加特定 class,然后在 JS 中调用Highlighter 对对应 class 的代码块进行一次渲染操作。
例如,对于一个HTML代码展示块,我们需要在代码块前后添加pre标签并添加特定类名,然后在JS文件中调用pre标签的 class 名进行渲染,具体代码如下所示:
```html
```
```js
SyntaxHighlighter.all();
```
其中,brush:html 代表要渲染的语言为HTML;SyntaxHighlighter.all() 代表将所有代码块进行渲染。
4、在WordPress中使用SyntaxHighlighter
对于使用WordPress的用户来说,SyntaxHighlighter还提供了一种无需添加CSS和JS文件的方便的使用方法。可以首先在WordPress的后台中安装SyntaxHighlighter插件,然后在文章编辑页面的编辑器中,找到“添加代码”按钮,选择“Syntax Highlighter”语法高亮,然后在弹出的对话框中选择对应的语言即可,最后保存文章即可。这种方式非常简单方便,而且将所有渲染和样式文件都集成在了插件中,避免了我们手动添加的麻烦。
三、SyntaxHighlighter常用功能
1、SyntaxHighlighter常用语言
SyntaxHighlighter支持多种语言,用户可以根据不同的需求来选择不同语言进行呈现。在引入插件的时候,需要引入对应的语言JS,例如如果我们需要呈现Python代码,则需要引入对应的Python语言JS。常用的如下所示:
```html
```
2、SyntaxHighlighter常用设置
SyntaxHighlighter还支持用户进行各种自定义和设置,例如更改代码块的背景色、添加行号等等。以下是一些常见的设置参数:
- gutter:表示是否显示行号(默认值为true);
- smart-tabs:表示在 Tab 缩进和空格缩进之间自动切换(默认是false);
- tab-size:表示 tab 制表符显示宽度(默认是4 个空格字符);
- light:表示是否启用优化默认为true);
- auto-links:表示是否在解析时自动将 URL 转化为 HTML 标签链接(默认为true);
具体设置方式如下所示:
```js
SyntaxHighlighter.defaults['smart-tabs'] = false;
SyntaxHighlighter.defaults['tab-size'] = 4;
SyntaxHighlighter.defaults['toolbar'] = false;
```
3、SyntaxHighlighter自定义语言
SyntaxHighlighter还支持针对特殊需求自定义语言。具体的做法是编写对应的识别语言的 JS 文件,然后将自己定义的新语言加入到语言列表中,然后和默认语言使用方式一样利用JS引入这个语言,即可使用自定义的语言进行语法高亮。例如我们来自定义一个简单的脚本语言,首先在JS中定义新的语言规范:
```js
SyntaxHighlighter.brushes.CustomScript = function() {
var keywords = 'var function if else'; //定义关键字
this.regexList = [
{ regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, //单行注释
{ regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, //多行注释
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, //双引号包括的字符串
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, //单引号包括的字符串
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } //关键字
];
};
SyntaxHighlighter.brushes.CustomScript.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.CustomScript.aliases = ['CustomScript'];
```
然后在JS文件中引用这个新的自定义语言,即可进行使用:
```html
```
```html
function test() {
var num = 1;
if (num > 0) {
alert("大于零");
} else {
alert("小于等于零");
}
}
```
以上我们介绍了SyntaxHighlighter工具的使用方法和常见功能,可能这只是冰山一角,还有很多强大的功能等待我们去探索和应用,因为语法高亮器在代码阅读和查错方面的有效性应该可以说是非常出色的,学习和掌握它的使用方法,对于我们的编程或者Web开发工作将会非常有益。