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 标签后面,不能后空格,不然首行缩进会有问题
这是由于行内标签之间空白会在在页面上显示的原因

不同的语言只需修改 code 标签的 class 值, 想要使用不同的主题只需引入对应的 css

highlight 支持的语言以及不同样式
地址

效果图

image.png

FAQ

想在同一个页面使用不同的 highlight.js 主题高亮代码, 后面使用的会覆盖掉前面的主题.
原因是 highlight.js 是通过引入不同的 css 文件实现不同的高亮颜色.类名都是一样的

解决方法: 通过接受父组件的 theme 来定义组件最外层 div的类名,以此 来运用不同的样式

比如运用默认主题, themedefault, .dv-json-editor--default为组件最外层div类名

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

新建一个 less 文件

// 对应默认主题
.dv-json-editor--default {
      // 复制 highlight.js/style/default.css 
}

// 对应 monokai 主题
.dv-json-editor--monokai {
      // highlight.js/style/monokai.css
 }

无需在组件中 import 'highlight.js/style/default.css', 只需引入我们新建的 less 文件

实现效果

themeatom-one-lightmonokai

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,879评论 1 45
  • 学习目标: 了解html的基本结构 掌握标题标签: 掌握段落标签: 掌握通用块标签: 掌握图片标签: 掌握超链接标...
    husky_1阅读 2,576评论 0 12
  • 0. 写在前面 当你开始工作时,你不是在给你自己写代码,而是为后来人写代码。 —— Nichloas C. Zak...
    康斌阅读 5,388评论 1 42
  • 脑图复习 Html和CSS的关系 学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言。...
    朝南而行_阅读 12,270评论 1 9
  • 听说申请连载文集,涨价了!吓得我赶紧申请了二个文集! 一个诗歌文集《陌上花开,缓缓回》 一个短篇小说集加散文《凋零...
    淑女_2e7d阅读 583评论 5 14