經過自定義指令的方式來實如今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)