欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在VUE项目中配合ueditor用highlight.js实现代码高亮

程序员文章站 2022-05-26 18:40:09
...

环境

VUE,NPM

需求

在ueditor编辑器里面加入代码语言后,页面生成的文章自动高亮起来。

目的

增加文章的可读性,以及让页面变得丰富多彩。

选择

我这里放弃了百度ueditor自带的高亮,因为确实不太好看,不符合我的审美,于是我这里用到的是highlight.js,这是一个提供自动识别代码块的高亮插件,并且它的库很多风格,可以根据自己的喜爱来配置。

准备

ueditor编辑器

配置

首先我们在自己的后台安装highlight,js.插件

npm install highlight.js --save

安装好后在需要使用高亮的页面,也就是ueditor编辑器页面中,先引入代码

import hljs from 'highlight.js'
import 'highlight.js/styles/atom-one-dark.css'

这里我用的风格是atom-one-dark风格( 对应atom-one-dark.css样式表 ),想要其他风格的去官网找需求。

然后就可以使用了。根据highlight官网给的对应的规则是自动识别<pre><code> </code></pre>标签中的代码进行高亮,而在ueditor有个代码语言的功能,这个功能使用后发现这个编辑器标记的代码块标签是<pre></pre>,所以下面的逻辑代码出现了。

let content=UE.getEditor('edit').getContent();
let c=document.createElement('div');
c.innerHTML=content;
for(let i=0;i<c.getElementsByTagName('pre').length;i++)
{
    let con=c.getElementsByTagName('pre')[i].innerHTML;
    c.getElementsByTagName('pre')[i].innerHTML='<code class="hljs ini">'+con+'</code>';
    hljs.highlightBlock(c.getElementsByTagName('pre')[i]);  //使用插件高亮你的代码块
}
content=c.innerHTML;
//content就是已经所以高亮了代码块的整个文章

上面代码是把每一个<pre></pre>标签都转换成了<pre><code> </code></pre>,然后再让highlight.js来进行渲染。

后续操作就是把content上传到数据库或者其他地方可以让前台获取就行了。

上面几步做了后,还没完,还需要在展示页面添加相对应的高亮库 ( 因为highlight是通过class类名来进行高亮 )。

我们先一样在前台安装highlight插件

npm install highlight.js --save

然后在前台展示的页面里加入css库

import 'highlight.js/styles/atom-one-dark.css'

打开项目写篇文章试一试,看看效果

如果看到是本篇文章代码块显示的样式,那么代表成功了!

结语

比较推荐在相对应的css库里加入自己的css样式,比如我对于hljs类加入了 border-radius:5px; 让代码块变成圆角更美观。