0. 前言
在 vue-cli3
项目中,通过highlight.js
,实现页面中代码高亮。
请先了解highlight.js官网中的使用说明。
1. 安装
npm install highlight.js --save
2. 封装成vue插件
新建highlight.js
文件,并添加:
// src/utils/highlight.js 文件路径,纯属自定义// highlight.js 代码高亮指令import Hljs from 'highlight.js';import 'highlight.js/styles/tomorrow-night.css'; // 代码高亮风格,选择更多风格需导入 node_modules/hightlight.js/styles/ 目录下其它css文件let Highlight = {};// 自定义插件Highlight.install = function (Vue) { // 自定义指令 v-highlight Vue.directive('highlight', { // 被绑定元素插入父节点时调用 inserted: function(el) { let blocks = el.querySelectorAll('pre code'); for (let i = 0; i < blocks.length; i++) { Hljs.highlightBlock(blocks[i]); } }, // 指令所在组件的 VNode 及其子 VNode 全部更新后调用 componentUpdated: function(el) { let blocks = el.querySelectorAll('pre code'); for (let i = 0; i < blocks.length; i++) { Hljs.highlightBlock(blocks[i]); } } })};export default Highlight;
3. 全局引入自定义插件
在src/main.js
中:
// highlight.js代码高亮插件import Highlight from './utils/highlight'; // from 路径是highlight.js的路径,纯属自定义Vue.use(Highlight);
4. 使用
<div id="codeView" v-highlight> <pre><code v-html="code"></code></pre></div>
code
是代码的字符串形式,比如:
"0x0000000000400da0 <+0>:\tpush\t%rbx\n0x0000000000400da1 <+1>:\tcmp\t$0x1,%edi\n0x0000000000400da4 <+4>:\tjne\t0x400db6 <main+22>\n"
更换更多的代码高亮风格,需要切换highlight.js
中导入的css
文件。