实现代码很简单,我们知道有highlight.js可以直接在浏览器中给pre
标签中的代码加入高亮标签的样式,然后引入对于的高亮样式CSS文件即可,我们可以在使用任何程序的网站中使用这个库。
但是highlight.js经过压缩后还是有几十kb,同样,在浏览器中渲染HTML标签也会耗时耗资源,所以干脆在服务端(生成页面的时候)就给代码加上高亮样式,我这里举两个例子,分别是两个Markdown生成器的使用方法:
MarkdownIt
这是我现在在用的解析器,在生成md实例的时候可以直接启用highlight.js插件。
const MarkdownIt = require('markdown-it');
const hljs = require('highlight.js');
const md = new MarkdownIt({
highlight: function(str, lang) {
if (lang && hljs.getLanguage(lang)) {
try {
return '<pre><code class="hljs ' + lang + '">' +
hljs.highlight(lang, str, true).value +
'</code></pre>';
} catch (__) {}
}
return '<pre><code>' + md.utils.escapeHtml(str) + '</code></pre>';
}
});
然后使用md.render()
方法解析MD时就会自动加上hljs的高亮样式了。
marked
这是另一款非常受欢迎的markdown解析器,我曾经也尝试使用过,相比markdownit,我认为它配置起来更加简单,同样,它也可以直接启用highlight.js拓展
const marked = require('marked');
const hljs = require('highlight.js');
marked.setOptions({
highlight: (code) => hljs.highlightAuto(code).value,
})
marked(markdown)