vue3+highlight.js代码高亮插件使用

news/2024/7/10 2:27:38 标签: javascript, vue, html5, 前端

先安装

javascript">npm install highlight.js

main.js中引入,并注册自定义指令

javascript">.....
import hljs from 'highlight.js'
window.hljs = hljs
import 'highlight.js/styles/atom-one-light.css'
import 'highlight.js/lib/common'
import mitt from 'mitt'
.....

app.directive('highlight', {
  mounted(el) {
    const blocks = el.querySelectorAll('pre code')
    blocks.forEach(block => {
      hljs.highlightBlock(block) // 高亮代码块
      hljs.lineNumbersBlock(block) // 显示行号
    })
  }
})

fileDetail.vue页面中

        <div class="block">
          <div class="title"> 二、查看源码 </div>
          <div class="desc source-code">
            <div v-highlight>
              <pre><code :class="detailData.fileSuffix" style="max-height: 500px; overflow: auto">{{ detailData.fileContent }}</code></pre>
            </div>
          </div>
        </div>
javascript">    // 高亮并滚动到对应一行代码
    const activeRow = line => {
      setTimeout(() => {
        const codeWrap = document.querySelector('.source-code code')
        const allline = document.querySelectorAll('.hljs-ln .hljs-ln-code')
        allline[line - 1]?.classList.add('danger-line')
        codeWrap.scrollTop = allline[line]?.offsetTop - codeWrap.clientHeight / 2
      }, 200)
    }


	// 获取数据
    const getDetail = vulId => {
      state.loading = true
      mistakAlarmDetail({ funId: route.query.type, vulId })
        .then(res => {
          state.detailData = res
          nextTick(() => {
            state.pageKey = Math.random()
            mistakDetailRef.value.scrollTop = 0
            activeRow(res.realRow)
          })
        })
        .finally(() => {
          state.loading = false
        })
    }
<style>
.hljs-ln {
  min-width: 100%;

  .danger-line {
    background-color: pink;
  }
}
</style>

后端返回数据
在这里插入图片描述

页面展示效果
在这里插入图片描述


http://www.niftyadmin.cn/n/5219217.html

相关文章

SpringBoot : ch06 整合 web(二)

前言 SpringBoot作为一款优秀的框架&#xff0c;不仅提供了快速开发的能力&#xff0c;同时也提供了丰富的文档和示例&#xff0c;让开发者更加容易上手。在本博客中&#xff0c;我们将介绍如何使用SpringBoot来整合Web应用程序的相关技术&#xff0c;并通过实例代码来演示如何…

如何编写自己的python包,并在本地进行使用

如何编写自己的python包,并在本地进行使用 一、直接引用 1.创建Python项目pythonProject。 2.并且在此项目下创建pg_message包。 3.pg_message包下默认生成_init_.py文件。 Python中_init_.py是package的标志。init.py 文件的一个主要作用是将文件夹变为一个Python模块,Pyt…

2020年06月 Scratch(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共15题,每题2分,共30分) 第1题 执行下图程序后,“花名”列表的第3项是? A:莲花 B:丁香 C:合欢 D:月季 答案:C 列表基本知识,选C。 第2题 执行如下图所示程序后,其结果为? A: B:

131.类型题-计算数学序列的和,请编写函数fun,其功能是S=……【满分解题代码+详细分析】(数学序列的和类型题-C/C++JavaPython实现)

文章目录 131.类型题-计算数学序列的和:计算并输出一.题目1.1 解题思路二.解题代码2.1 C/C++解题代码2.2 python解题代码2.3 Java解题代码三.解题代码仔细分析3.1 C/C++解题代码仔细分析3.2 Java解题代码仔细分析3.3 Python解题代码仔细分析四.本类型题解题诀窍五.寄语131.类型…

VR全景技术助力政务服务大厅数字化,打造全新政务服务体验

引言&#xff1a; 随着科技的飞速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术逐渐走进人们的视野。VR全景技术作为VR领域的一项重要应用&#xff0c;以其沉浸式、交互式的特点&#xff0c;正逐渐渗透到各行各业。政务服务大厅作为相关部门与民众之间的桥梁&#…

Redis常用操作及应用(二)

一、Hash结构 1、常用操作 HSET key field value //存储一个哈希表key的键值 HSETNX key field value //存储一个不存在的哈希表key的键值 HMSET key field value [field value ...] //在一个哈希表key中存储多个键值对 HGET key fie…

【C语言】优化通讯录管理系统2

本篇博客是基于上一篇博客写出来的&#xff0c;了解上一篇博客 大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家再次优化上一篇的通讯录&#xff0c;实现将录入的数据在程序退出后存储到文件中&#xff0c;在下一次程序开始时打开文件获取数据&#xff0c;如果你觉得我写…

ubuntu下qtcreator打开大文件时内存占满并闪退的问题

在ubuntu16.04上&#xff0c;使用qtcreator 3.6.0打开一个2.6MB的头文时&#xff0c;会导致内存占满并闪退 解决方法&#xff1a; Index of /archive/qtcreator/4.9/4.9.0 使用qtcreator 4.9.0&#xff0c;问题解决