通過highlight.js在vue中實現(xiàn)代碼高亮

0. 前言

vue-cli3 項目中,通過highlight.js,實現(xiàn)頁面中代碼高亮。

請先了解highlight.js官網(wǎng)中的使用說明。

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', {
        // 被綁定元素插入父節(jié)點時調(diào)用
        inserted: function(el) {
            let blocks = el.querySelectorAll('pre code');
            for (let i = 0; i < blocks.length; i++) {
                Hljs.highlightBlock(blocks[i]);
            }
        },
        // 指令所在組件的 VNode 及其子 VNode 全部更新后調(diào)用
        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文件。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 基于Vue的一些資料 內(nèi)容 UI組件 開發(fā)框架 實用庫 服務端 輔助工具 應用實例 Demo示例 element★...
    嘗了又嘗閱讀 1,297評論 0 1
  • UI組件 element- 餓了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的組件庫 m...
    你猜_3214閱讀 11,349評論 0 118
  • UI組件 element- 餓了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的組件庫 m...
    王喂馬_閱讀 6,597評論 1 77
  • UI組件 element- 餓了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的組件庫 m...
    柴東啊閱讀 15,965評論 2 140
  • 1. Python框架 知乎目前使用的是Tornado框架。 參考鏈接:http://zh.wikipedia.o...
    青年克拉蘇閱讀 2,093評論 0 0

友情鏈接更多精彩內(nèi)容