Highlight.js – 前端的代码语法高亮库
千辛万苦写了篇技术分享,贴了一堆代码,兴高采烈地发到了自己的博客网站上。结果却发现代码全是白底黑字,字体还难看得很,你瞬间就没了兴致。能不能让网页也能像 IDE 那样,做带语法高亮的炫酷显示呢?来看一看 Highlight.js 吧,看这个语法高亮库如何点亮你的代码。
Highlight.js
Highlight.js,是在 Github 上由 highlight.js 组织开源的前端代码语法高亮库,代码仓库在 https://github.com/highlightjs/highlight.js,目前版本为 10.1.0。其不依赖于任何框架,自带对于大量编程语言和标记语言的语法高亮规则,和主流的高亮色彩方案,且可以自由扩展。其支持自动语言检测,使用极为方便,是在网页上进行语法高亮的不二之选。
highlight.js语法高亮库
Highlight.js 的 CSS 文件的选择决定高亮配色方案,默认为 Default,另外还有如 Monokai Sublime、Ocean、Solarized Dark、Tomorrow 等经典的主流配色方案。
而 JS 文件的选择决定可以支持的语言。主要的 highlight.min.js 包含了一些主流的语言,包括 C++、XML、Markdown、Java 等。如果需要一些其他的语言,则要另外引用该语言对应JS文件。
Highlight.js 在浏览器中可以简单的引用 CDN 来使用:
Highlight.js 使用十分简单,在引用了 CSS 和 JS 后,执行
Highlight.js就会自动查找网页中以标签 pre 和 code 所包裹的代码
并自动检测代码语言,进行高亮渲染。我们也可以为 code 标签添加语言名称的 class,来显式地标明代码语言。我们可以看一个使用示例,注意实际代码中尖括号等 HTML 转义字符需要进行转义处理:
该网页对于 C++ 语言片段使用了 Monokai Sublime 主题进行了语法高亮渲染:
使用Highlight.js渲染C++代码
可以看到,包括关键字、注释和字面值等都有了不同颜色的渲染,输出十分美观。以下则是使 Dracula 主题对 Javascript 代码渲染的例子:
使用Highlight.js渲染Javascript代码
我们也可以不使用 pre 和 code 标签来包裹代码,改为使用自定义的容器,使用时需要注意换行和等宽字体的问题。
在渲染大量代码时,为避免浏览器卡死,可以使用 Web Worker 来在后台进行渲染:
Highlight.js 使得在前端页面进行语法高亮变得十分方便,为在网页显示的代码增添了颜色和生机。
Highlight.js 文档详尽,设计简洁,为编写新的语言支持和配色方案提供了很大支持,定制化能力和可扩展性极强。Highlight.js 的代码包含了对于各种语言的语法解析,和不同配色方案的设计,对于对编程语言和语法高亮领域感兴趣的开发者是一座珍贵的宝库。
应该学会的20个JavaScript代码写法
当元素滚动到可视区之后,给元素添加一个动画
代码如下:
代理如何使用,相信大家都会,下面这段代码我也演示了
代码如下:
模块化导出,是JS代码必备技能
代码如下:
用过的数据,进行缓存,下次再循环使用,想到递归了吗?
代码如下:
写过闭包的同学都知道,闭包的其中一个作用就是保护变量
代码如下:
最简洁处理异步变同步的方式就是`async/await`
代码如下:
debugger的时候,更友好的信息输出,会提升我们效率
代码如下:
在转化JSON数据时,同时可以将数据处理成你想要的样子
代码如下:
正则表达式的强大之处,大家都应该知道,我们需要善于使用正则表达式帮我们解决问题
代码如下:
可选链处理未定义的值,是处理ifelse多嵌套的方式之一,也是最简洁的方式之一
代码如下:
变量类型判断越准确,代码安全性越高
代码如下:
ES6给出字符串拼接优雅的处理方式${}
代码如下:
给对象设置动态属性名称,也是我们日常代码里经常碰到的问题
代码如下:
同时处理多个Promises的方式,是使用`Promise.all`
代码如下:
箭头函数 ( () => {}) 不仅简洁,而且还保留this值
代码如下:
使用setTimeout封装一个延迟操作函数
代码如下:
使用&&和||创建清晰简洁的条件语句
代码如下:
map()方法是转换数据的最好方式
代码如下:
不管是对象还是数组,都可以使用扩展符来进行数据添加
代码如下:
解构允许您轻松地从数组或对象中获取值
代码如下:
33个非常实用的JavaScript一行代码,建议收藏
该方法用于检测给出的日期是否有效:
该方法用于计算两个日期之间的间隔时间:
距离过年还有90天~
该方法用于检测给出的日期位于今年的第几天:
2021年已经过去300多天了~
该方法可以用于将时间转化为hour:minutes:seconds的格式:
该方法用于将英文字符串的首字母大写处理:
该方法用于将一个字符串进行翻转操作,返回翻转后的字符串:
该方法用于生成一个随机的字符串:
该方法可以从指定长度处截断字符串:
该方法用于去除字符串中的HTML元素:
该方法用于移除数组中的重复项:
该方法用于判断一个数组是否为空数组,它将返回一个布尔值:
可以使用下面两个方法来合并两个数组:
该方法用于判断一个数字是奇数还是偶数:
该方法用于获取两个整数之间的随机整数
该方法用于将一个数字按照指定位进行四舍五入:
该方法可以将一个RGB的颜色值转化为16进制值:
该方法用于获取一个随机的十六进制颜色值:
该方法使用 navigator.clipboard.writeText 来实现将文本复制到剪贴板:
该方法可以通过使用 document.cookie 来访问 cookie 并清除存储在网页中的所有 cookie:
该方法通过内置的 getSelection 属性获取用户选择的文本:
该方法用于检测当前的环境是否是黑暗模式,它是一个布尔值:
该方法用于在页面中返回顶部:
该方法用于检测当前标签页是否已经激活:
该方法用于检测当前的设备是否是苹果的设备:
该方法用于判断页面是否已经底部:
该方法用于重定向到一个新的URL:
该方法用于打开浏览器的打印框:
该方法可以返回一个随机的布尔值,使用Math.random()可以获得0-1的随机数,与0.5进行比较,就有一半的概率获得真值或者假值。
可以使用以下形式在不适用第三个变量的情况下,交换两个变量的值:
该方法用于获取一个变量的类型:
该方法用于摄氏度和华氏度之间的转化:
该方法用于检测一个JavaScript对象是否为空:
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。