当前位置: 首页 > news >正文

highlight.js

highlight.js

highlight.js 是一个用于 代码语法高亮 的 JavaScript 库,支持 190+ 种编程语言和 90+ 种主题样式,广泛应用于技术博客、文档网站和代码编辑器等场景。


官网与文档

官网地址:https://highlightjs.org/
GitHub 仓库:https://github.com/highlightjs/highlight.js
主题预览:https://highlightjs.org/static/demo/


核心特性

自动语言检测:无需指定语言,自动识别代码类型。
多语言支持:涵盖主流语言(如 JavaScript、Python、HTML、CSS)。
主题丰富:内置多种高亮主题(如 github-darkatom-one-dark)。
轻量级:支持按需加载语言和主题,减少体积。


安装方法

1. npm/yarn/pnpm 安装
pnpm add highlight.js
2. CDN 引入
<!-- 核心库 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>

<!-- 主题样式(以 github-dark 为例) -->
<link 
  rel="stylesheet" 
  href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css"
>

基础用法

1. HTML 中直接使用
<pre><code class="language-javascript">
  function hello() {
    console.log("Hello, World!");
  }
</code></pre>

<script>
  // 初始化高亮
  hljs.highlightAll();
</script>
2. 在 React/Vue 中使用
// React 示例
import { useEffect } from 'react';
import hljs from 'highlight.js';
import 'highlight.js/styles/github-dark.css';

export default function CodeBlock() {
  useEffect(() => {
    hljs.highlightAll();
  }, []);

  return (
    <pre>
      <code className="language-javascript">
        {`function sum(a, b) { return a + b; }`}
      </code>
    </pre>
  );
}

高级用法

1. 手动指定语言
const code = `<div class="container">Hello</div>`;
const result = hljs.highlight(code, { language: 'html' }).value;
document.getElementById("output").innerHTML = result;
2. 动态加载语言(按需加载)
import hljs from 'highlight.js/lib/core';
import javascript from 'highlight.js/lib/languages/javascript';

// 注册 JavaScript 语言
hljs.registerLanguage('javascript', javascript);
hljs.highlightAll();
3. 自定义主题
// 修改默认主题
import 'highlight.js/styles/atom-one-dark.css';

配置选项

选项说明
ignoreUnescapedHTML是否忽略未转义的 HTML(默认 false,设为 true 可防 XSS)
languages指定允许自动检测的语言列表(如 ['javascript', 'python']
classPrefixCSS 类名前缀(默认 hljs-

注意事项

SPA 应用:页面动态加载后需重新调用 hljs.highlightAll()
性能优化:按需加载语言和主题,避免引入全部文件。
XSS 防护:确保代码内容安全,避免直接渲染用户输入的内容。


示例效果

// 高亮前
function example() { return "Hello"; }

// 高亮后(使用 atom-one-dark 主题)
<span class="hljs-keyword">function</span> <span class="hljs-title function_">example</span>() { <span class="hljs-keyword">return</span> <span class="hljs-string">"Hello"</span>; }

替代方案

Prism.js:https://prismjs.com/
更轻量,但需手动指定语言。

通过 highlight.js,你可以快速为网页中的代码块添加美观的高亮效果。

相关文章:

  • 基于微信小程序开发的宠物领养平台——代码解读
  • DataX的python3使用
  • Android Dagger 2 框架的注解模块源码分析(一)
  • 【QT】-解析打包json
  • Java 8 + Tomcat 9.0.102 的稳定环境搭建方案,适用于生产环境
  • Linux centos 7 grub引导故障恢复
  • celery入门
  • 探讨Deveco Studio常见问题及解决方案,分享快速排障方法
  • Android Framework 之了解系统启动流程一
  • Shp文件转坐标并导出到Excel和JSON(arcMap + excel)
  • NCCL如何打印XML拓扑文件,操作说明和源码展示
  • VIC水文模型
  • 打靶练习-W1R3S、JARBAS、SickOS、Prime
  • 【每日学点HarmonyOS Next知识】tab对齐、相对布局、自定义弹窗全屏、动画集合、回到桌面
  • 【Unity网络同步框架 - Nakama研究(二)】
  • 基于NXP+FPGA永磁同步电机牵引控制单元(单板结构/机箱结构)
  • Simulink指导手册笔记②--快捷键及基本操作
  • C51 Proteus仿真实验17:数码管显示4×4键盘矩阵按键
  • CesiumforUE中Cesium3DTileset中高频使用的组件概述
  • 【最新】 ubuntu24安装 1panel 保姆级教程
  • 上海交大计算机学院成立,设多个拔尖人才特色班
  • 中美经贸中方牵头人、国务院副总理何立峰出席新闻发布会表示:中美达成重要共识,会谈取得实质性进展
  • “电竞+文旅”释放价值,王者全国大赛带火赛地五一游
  • 人民日报读者点题·共同关注:今天我们为什么还需要图书馆?
  • 碧桂园境外债务重组:相当于现有公众票据本金额逾50%的持有人已加入协议
  • 云南一餐馆收购长江野生鱼加工为菜品,被查处罚款