Vue中經過highlight.js實現代碼高亮

在 vue 項目中,經過highlight.js,如何實現頁面中代碼高亮?css

1、安裝highlight.js

npm install highlight.js --save 或 yarn add highlight.js

2、封裝成vue插件

新建highlight.js文件html

/**
 * 自定義代碼高亮插件
 */
import hljs from 'highlight.js'
import 'highlight.js/styles/vs.css'

const install = function (Vue) {
    Vue.directive('highlight', {
        deep: true,
        bind (el, binding) {
            // on first bind, highlight all targets
            let targets = el.querySelectorAll('code')

            targets.forEach(target => {
                if (typeof binding.value === 'string') {
                    // if a value is directly assigned to the directive, use this
                    // instead of the element content.
                    target.textContent = binding.value
                }
                hljs.highlightBlock(target)
            })
        },
        componentUpdated (el, binding) {
            // after an update, re-fill the content and then highlight
            let targets = el.querySelectorAll('code')

            targets.forEach(target => {
                if (typeof binding.value === 'string') {
                    // if a value is directly assigned to the directive, use this
                    // instead of the element content.
                    target.textContent = binding.value
                    hljs.highlightBlock(target)
                }
            })
        },
    })

}

if (window.Vue) {
    window['highlight'] = highlight
    Vue.use(install) // eslint-disable-line
}

export default install

3、全局引入自定義插件

src/main.js中:vue

// highlight.js代碼高亮插件
import Highlight from './directive/highlight'; // 這裏是你項目highlight.js所在路徑
Vue.use(Highlight);

4、使用插件

<!-- 1.若是你須要高亮的代碼是一個變量值,那麼你能夠這樣使用它。 其中 sourcecode 爲變量。 -->
<pre v-highlight="sourcecode"><code></code></pre>

<!-- 2.若是你須要高亮的代碼固定的源代碼,那麼你能夠這樣使用它。 -->
<pre v-highlight><code>const s = new Date().toString()</code></pre>

參考

自定義插件官方文檔git

自定義指令官方文檔github

highlightjs官方網站npm

highlightjs Demo地址ide

vue-highlightjs Github地址flex

相關文章
相關標籤/搜索