web页面代码片段高亮显示,highlight.js库的使用方法

本文介绍了如何在HTML和Vue3中使用highlight.js库实现代码片段的高亮显示,包括直接应用、通过AJAX请求动态加载代码及自定义颜色。同时,也提到了在Vue3中通过官方插件简化使用的示例。
摘要由CSDN通过智能技术生成

目录

🎉应用场景

🎉原生HTML中应用

1.直接应用

2.AJAX请求数据展示

3.高亮颜色自定义 

🎉Vue3中使用

🎉结语


🎉应用场景

在日常开发中,我们可能会遇到这样一个场景,就是在我们的网站上面显示一些代码片段,为了方便观看,我们肯定是希望代码片段是可以高亮显示的,这时候我们就可以使用highlight.js这个js库,来帮我们解决这样的问题。

像下面这样的代码片段 

🎉原生HTML中应用

我们在html文件中需要引入对应的highlight.js文件以及样式表,可以采用CDN引入的方式,或者直接去下载对应的文件。

css样式我是直接复制过来了,highlight.js是采用的CDN引入

 <style>
    pre code.hljs {
      display: block;
      overflow-x: auto;
      padding: 1em
    }

    code.hljs {
      padding: 3px 5px
    }

    /*!
  Theme: GitHub Dark
  Description: Dark theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-dark
  Current colors taken from GitHub's CSS
*/
    .hljs {
      color: #c9d1d9;
      background: #0d1117
    }

    .hljs-doctag,
    .hljs-keyword,
    .hljs-meta .hljs-keyword,
    .hljs-template-tag,
    .hljs-template-variable,
    .hljs-type,
    .hljs-variable.language_ {
      /* prettylights-syntax-keyword */
      color: #ff7b72
    }

    .hljs-title,
    .hljs-title.class_,
    .hljs-title.class_.inherited__,
    .hljs-title.function_ {
      /* prettylights-syntax-entity */
      color: #d2a8ff
    }

    .hljs-attr,
    .hljs-attribute,
    .hljs-literal,
    .hljs-meta,
    .hljs-number,
    .hljs-operator,
    .hljs-variable,
    .hljs-selector-attr,
    .hljs-selector-class,
    .hljs-selector-id {
      /* prettylights-syntax-constant */
      color: #79c0ff
    }

    .hljs-regexp,
    .hljs-string,
    .hljs-meta .hljs-string {
      /* prettylights-syntax-string */
      color: #a5d6ff
    }

    .hljs-built_in,
    .hljs-symbol {
      /* prettylights-syntax-variable */
      color: #ffa657
    }

    .hljs-comment,
    .hljs-code,
    .hljs-formula {
      /* prettylights-syntax-comment */
      color: #8b949e
    }

    .hljs-name,
    .hljs-quote,
    .hljs-selector-tag,
    .hljs-selector-pseudo {
      /* prettylights-syntax-entity-tag */
      color: #7ee787
    }

    .hljs-subst {
      /* prettylights-syntax-storage-modifier-import */
      color: #c9d1d9
    }

    .hljs-section {
      /* prettylights-syntax-markup-heading */
      color: #1f6feb;
      font-weight: bold
    }

    .hljs-bullet {
      /* prettylights-syntax-markup-list */
      color: #f2cc60
    }

    .hljs-emphasis {
      /* prettylights-syntax-markup-italic */
      color: #c9d1d9;
      font-style: italic
    }

    .hljs-strong {
      /* prettylights-syntax-markup-bold */
      color: #c9d1d9;
      font-weight: bold
    }

    .hljs-addition {
      /* prettylights-syntax-markup-inserted */
      color: #aff5b4;
      background-color: #033a16
    }

    .hljs-deletion {
      /* prettylights-syntax-markup-deleted */
      color: #ffdcd7;
      background-color: #67060c
    }

    .hljs-char.escape_,
    .hljs-link,
    .hljs-params,
    .hljs-property,
    .hljs-punctuation,
    .hljs-tag {
      /* purposely ignored */
    }
</style>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.4.0/highlight.min.js"></script>

1.直接应用

html结构需要使用<pre><code> ... </code></pre>标签包裹起来

  <pre><code >
    *{
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      font-family: sans-serif;
      font-size: 16px;
      line-height: 1.5;
      color: #333;
      background-color: #fff;
    }
</code></pre>

最简单的方法就是引入后highlight.js,执行一个函数,他就会自动检测你的代码的语言,给你生成对应的高亮。

<script>
  hljs.highlightAll();
</script>

这样子之后,代码就会达到高亮的效果了。

2.AJAX请求数据展示

第二种场景是我们需要的代码片段不是现成的,需要通过一些请求才能拿到,这时候我们可以这样做。

假设这是请求回来的数据

 const Code = {
    language: 'css',
    content:
      `*{
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      font-family: sans-serif;
      font-size: 16px;
      line-height: 1.5;
      color: #333;
      background-color: #fff;
    }
    *{
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      font-family: sans-serif;
    }
    `
  }

我们可以使用highlight.js内置的另外一个函数,对代码片段进行解析

const res = hljs.highlight(Code.content, {
    language: Code.language
  })
  console.log(res);

得到的结果:

我们需要的是html结构,所以我们需要value值,然后将其渲染到页面上即可,但是记得需要加上class类名,因为 highlight.js是通过类名来对代码片段进行高亮渲染的

  const code = document.querySelector('pre code')
  code.innerHTML = res.value
  code.className = `hljs language-${Code.language}`

这样也就得到的对应的效果

3.高亮颜色自定义 

其实通过观察css和生成的html结构,可以看到每一句代码都是由span标签包裹,且根据不同的代码,添加了不同的class类名

所以我们可以改变css中的颜色,来实现自己定制的特点颜色高亮效果

这样就实现了自定制的代码高亮效果了

🎉Vue3中使用

这里只列举Vue3是因为官方写了一个关于vue3的插件,这样可以让我们更方便的使用,vue2的话可能使用不了此插件,可以像前面那样也是可以实现的。

安装对应的包

npm i highlight.js
npm i @highlightjs/vue-plugin

在main.js中全局注册此插件(类似于组件),并引入对应的js库和css样式表

import { createApp } from 'vue'
import App from './App.vue'
import 'highlight.js/lib/common'
import hljsVuePlugin from '@highlightjs/vue-plugin' //插件
import 'highlight.js/styles/vs2015.css' //样式表,很多可以自己选择或定制
const app = createApp(App)
//注册组件
app.use(hljsVuePlugin)
app.mount('#app')

这样之后我们可以直接使用组件的方式,就不用<pre><code> ... </code></pre>标签包裹了

<template>
  <highlightjs autodetect :code="code" />
</template>

<script setup>
import { ref } from 'vue'

const code = ref(
  `
<template>
  <div>
    <h1>吃饭</h1>
    <p>睡觉</p>
  </div>
</template>
`
)
</script>

效果 

🎉结语

更多使用方法可以参考官网

highightjs官网

highightjs中文官网

可以对其插件进一步的封装,完成一些小功能,比如代码复制,代码编写等等

  • 48
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将highlight.js更新到最新版本,你可以按照以下步骤进行操作: 1. 打开highlight.js的官方GitHub仓:https://github.com/highlightjs/highlight.js 2. 在页面上方找到绿色的 "Code" 按钮,点击并选择 "Download ZIP" 选项,下载最新版本的highlight.js。 3. 解压下载的ZIP文件,在解压后的文件夹中找到 `highlight.min.js` 或 `highlight.js` 文件。 4. 将新版本的highlight.js文件替换你项目中原来的highlight.js文件。你可以将新版本文件复制到你项目中的相同位置,覆盖原来的文件。 5. 在你的HTML文件中,确认你通过 `<script>` 标签引入的highlight.js路径已经更新为新版本文件的路径。例如: ```html <script src="path/to/new/highlight.min.js"></script> ``` 6. 保存HTML文件并重新加载页面。 现在,你应该已经成功将highlight.js更新到最新版本了。你可以继续使用 `hljs.highlightAll()` 或其他highlight.js提供的方法来进行代码高亮显示。 如果你使用了CDN来引入highlight.js,你可以查找最新版本的CDN链接,并将之前的链接替换为新的链接。例如,可以查找并使用以下CDN链接: ```html <script src="https://cdn.jsdelivr.net/npm/highlight.js@10.7.2/build/highlight.min.js"></script> ``` 请注意,在更新highlight.js时,也要确保其他相关依赖(如样式表)与新版本兼容。如果有其他问题或需要进一步帮助,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lee哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值