Vue中使用highlight.js格式化高亮代碼

安裝

npm install highlight.js 
// or
yarn add highlight.js

引入

<script>
import  hljs  from 'highlight.js';  
// 樣式文件
import('highlight.js/styles/atom-one-light.css');
</script>

定義指令

<script>
export default {
  directives: {
    highlightjs: {  
       inserted (el) {  
            // 遍歷元素并且使用 highlight 進行處理 
           const preEl = document.querySelectorAll('pre code');
           preEl.forEach(el => {
            hljs.highlightBlock(el);
          });
       }
    }  
  }
}
<script>

使用

<template>
        <pre v-highlightjs>
          <code class="json" spellcheck="false">{{value}}</code>
        </pre>
<template>

!!! value 必須在 code 標(biāo)簽后面,不能后空格,不然首行縮進會有問題
這是由于行內(nèi)標(biāo)簽之間空白會在在頁面上顯示的原因

不同的語言只需修改 code 標(biāo)簽的 class 值, 想要使用不同的主題只需引入對應(yīng)的 css

highlight 支持的語言以及不同樣式
地址

效果圖

image.png

FAQ

想在同一個頁面使用不同的 highlight.js 主題高亮代碼, 后面使用的會覆蓋掉前面的主題.
原因是 highlight.js 是通過引入不同的 css 文件實現(xiàn)不同的高亮顏色.類名都是一樣的

解決方法: 通過接受父組件的 theme 來定義組件最外層 div的類名,以此 來運用不同的樣式

比如運用默認(rèn)主題, themedefault, .dv-json-editor--default為組件最外層div類名

<template>
    <div :class="'dv-json-editor--' + theme">
      ...
    </div>
</template>
<script>
  ..
      props: {
        theme: String,
        default: 'default' 
      }
...
</script>

新建一個 less 文件

// 對應(yīng)默認(rèn)主題
.dv-json-editor--default {
      // 復(fù)制 highlight.js/style/default.css 
}

// 對應(yīng) monokai 主題
.dv-json-editor--monokai {
      // highlight.js/style/monokai.css
 }

無需在組件中 import 'highlight.js/style/default.css', 只需引入我們新建的 less 文件

實現(xiàn)效果

themeatom-one-lightmonokai

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

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

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,809評論 1 45
  • 學(xué)習(xí)目標(biāo): 了解html的基本結(jié)構(gòu) 掌握標(biāo)題標(biāo)簽: 掌握段落標(biāo)簽: 掌握通用塊標(biāo)簽: 掌握圖片標(biāo)簽: 掌握超鏈接標(biāo)...
    husky_1閱讀 2,654評論 0 12
  • 0. 寫在前面 當(dāng)你開始工作時,你不是在給你自己寫代碼,而是為后來人寫代碼。 —— Nichloas C. Zak...
    康斌閱讀 5,521評論 1 42
  • 腦圖復(fù)習(xí) Html和CSS的關(guān)系 學(xué)習(xí)web前端開發(fā)基礎(chǔ)技術(shù)需要掌握:HTML、CSS、JavaScript語言。...
    朝南而行_閱讀 12,525評論 1 9
  • 聽說申請連載文集,漲價了!嚇得我趕緊申請了二個文集! 一個詩歌文集《陌上花開,緩緩回》 一個短篇小說集加散文《凋零...
    淑女_2e7d閱讀 599評論 5 14

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