在Vue中使用highlight.js

https://cheerego.github.io/20...css

經過自定義指令的方式來實如今Vue中實現語法高亮html

問題

highlight.js若是在Vue中使用,這個問題一直困擾着我,而highlight.js的使用說明太過於簡單,徹底不知道怎麼使用。vue

// 徹底是一臉懵B的,並且無論通過怎麼使用都沒法實現代碼高亮的效果
<link rel="stylesheet" href="/path/to/styles/default.css">
<script src="/path/to/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>

highlight.js的Usage有這麼一個方法我以爲我使用獲得的git

$(document).ready(function() {
  $('pre code').each(function(i, block) {
    hljs.highlightBlock(block);
  });
});

實現

安裝

npm install highlight.js

編碼

Vue自定義指令 文檔github

// Vue-cli生成的工程文件的src/main.js
import hljs from 'highlight.js'
import 'highlight.js/styles/googlecode.css' //樣式文件
Vue.directive('highlight',function (el) {
  let blocks = el.querySelectorAll('pre code');
  blocks.forEach((block)=>{
    hljs.highlightBlock(block)
  })
})

使用

<p v-html="markdownhtml" v-highlight></p>

到這裏咱們就打工告成了。npm

封裝成插件

編寫插件

// highlight.js
import Vue from 'vue'
import Hljs from 'highlight.js'
import 'highlight.js/styles/googlecode.css'
let Highlight = {}
Highlight.install = function (Vue, options) {
  Vue.directive('highlight', function (el) {
    let blocks = el.querySelectorAll('pre code');
    blocks.forEach((block) => {
      Hljs.highlightBlock(block)
    })
  })
}
export default Highlight

使用插件

import Highlight from 'path/to/Highlight.js'
Vue.use(Highlight)
相關文章
相關標籤/搜索