美文网首页程序员
Vue2 实现代码高亮功能

Vue2 实现代码高亮功能

作者: 形影相随_371e | 来源:发表于2018-07-18 15:54 被阅读716次

    前言
    本来这是一个很简单的问题,直接引入第三方插件,然后安装第三方插件的教程写几行代码就可以了,但这是理想的状态,在实际开发中,肯定会遇到各种情况,导致代码没有亮度。

    基于 highlight.js 实现

    image.png

    1.安装 highlinght.js

     npm install highlight.js
    

    2.下面我们先来基本按照 highlight.js 官方教程来实践一下。

    引入 js 库 highlight.js 和样式表 github.css,官方提供了很多种主题,所有的主题样式文件存放 node_modules\highlight.js\styles 目录中,你可以根据自己的口味进行选择。

    在main.js里面引入:

    import hljs from 'highlight.js';
    import 'highlight.js/styles/googlecode.css' //样式文件
    
    Vue.directive('highlight',function (el) {
        let blocks = el.querySelectorAll('pre code');
        setTimeout(() =>{
            blocks.forEach((block)=>{
            hljs.highlightBlock(block)
            })
        }, 200)
    })
    

    按照官方的写法是没有定时器的,但是在没有定时器的时候你会发现代码根本就没有高亮效果,原因在于 code 元素没找到,也就是说在创建组件后,还没能成功的找到 code 元素,因为 Vue 还没渲染到页面中。此时我们可以通过万能的定时器来延迟执行就可以解决了。

    在组件模板中添加如下代码:

    <div v-highlight>
        <pre>
            <code v-html="content"></code>
        </pre>
    </div>
    

    效果如下:


    image.png

    我的博客

    我的博客

    相关文章

      网友评论

        本文标题:Vue2 实现代码高亮功能

        本文链接:https://www.haomeiwen.com/subject/szgopftx.html