2023-04-21 22:21:03.0
无极低码 :https://wheart.cn

基本用法​

在浏览器中使用​

在网页上使用highlight.js的最小限度是链接到一个主题库并调用highlightAll


<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/default.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>

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


自动检测语言找到并高亮显示<pre><code>标签内的代码。如果自动检测不到,或者你更喜欢直接的,你可以在class属性中手动指定语言:


<pre><code class="language-html">...</code></pre>



纯文本​

使用plaintext来处理纯文本:


<pre><code class="language-plaintext">...</code></pre>


忽略高亮​

使用nohighlight来跳过代码高亮:


<pre><code class="nohighlight">...</code></pre>


在Node.js中使用​


// load the library and ALL languages
const hljs = require('highlight.js');
const html = hljs.highlightAuto('<h1>Hello World!</h1>').value


一般只需要加载通用语言处理即可:


const hljs = require('highlight.js/lib/common');


要使用特定语言高亮显示代码,请使用 highlight


const html = hljs.highlight('<h1>Hello World!</h1>', {language: 'xml'}).value


更多使用请参考 API文档。

语言支持​

Highlight.js 支持 180 多种语言。您可以在 SUPPORTED_LANGUAGES 中找到支持的语言。

自定义​

如果您需要对 Highlight.js 的初始化进行更多控制,可以使用 highlightElementconfigure 函数。这使您可以更好地控制要高亮显示的内容。例如:


document.addEventListener('DOMContentLoaded', (event) => {
  document.querySelectorAll('pre code').forEach((el) => {
    hljs.highlightElement(el);
  });
});


更多配置选项。

自定义HTML​

强烈建议 <pre><code> 对代码块进行包装。因为这非常语义化,开箱即用,零污染。也可以使用其他 HTML 元素,但您可能需要特别注意保留换行符。

假设使用div进行包装:


<div class='code'>...</div>


那么其高亮脚本就需要如下处理:


// first, find all the div.code blocks
document.querySelectorAll('div.code').forEach(el => {
  // then highlight each
  hljs.highlightElement(el);
});


在不使用<pre>的情况下,通过CSS中的white-space: pre也可以实现代码换行,如下:


div.code {
  white-space: pre;
}


在Vue.js中使用​

下载 highlightjs/vue-plugin,这是用 highlight.js 封装好的 vue 插件


<template>
  <highlightjs
    language="js"
    code="console.log('Hello World');"
  />
</template>

<script>
import 'highlight.js/lib/common';
import hljsVuePlugin from "@highlightjs/vue-plugin";

export default {
  components: {
    highlightjs: hljsVuePlugin.component
  }
}
</script>


在 Web Worker 中使用​

如果要高亮显示的代码内容非常多,您可以使用 Web Worker 来处理


window.addEventListener('load', () => {
  const code = document.querySelector('#code');
  const worker = new Worker('worker.js');
  worker.onmessage = (event) => { code.innerHTML = event.data; }
  worker.postMessage(code.textContent);
});


worker.js 中:


worker.onmessage = (event) => {
  importScripts('<path>/highlight.min.js');
  const result = self.hljs.highlightAuto(event.data);
  postMessage(result.value);
};


加载highlight.js​

首先,您可能会通过 npmyarn 来获取 highlight.js

Node.js / require


// require the highlight.js library, including all languages
const hljs = require('./highlight.js');
const highlightedCode = hljs.highlightAuto('<span>Hello World!</span>').value


一般只需要加载公用语言处理即可。


const hljs = require('highlight.js/lib/common');


当然也可以按需加载指定语言:


const hljs = require('highlight.js/lib/core');
hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml'));

const highlightedCode = hljs.highlight('<span>Hello World!</span>', {language: 'xml'}).value


ES6 模块 / import

注意

您也可以直接从完全静态的 URL 引入,例如: ES6 模块 CDN 资源。

默认引入将加载全部语言:


import hljs from 'highlight.js';


按需要引入指定语言:


import hljs from 'highlight.js/lib/core';
import javascript from 'highlight.js/lib/languages/javascript';
hljs.registerLanguage('javascript', javascript);


指定引入 CSS 主题样式:


import hljs from 'highlight.js';
import 'highlight.js/styles/github.css';


获取highlight.js​

highlight.js支持AMDCommonJS规范,开箱即用,像通过RequireJSBrowserify获取,不需要做任何其他操作,当然您也可以使用r.js来构建:


r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js


通过 CDN 获取​

cdnjs​

普通JS​


<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>
<!-- and it's easy to individually load additional languages -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/go.min.js"></script>


ES6 模块​


<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/dark.min.css">

<script type="module">
import hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/es/highlight.min.js';
//  and it's easy to individually load additional languages
import go from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/es/languages/go.min.js';
hljs.registerLanguage('go', go);
</script>


jsdelivr​

普通JS​


<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.6.0/build/styles/default.min.css">
<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.6.0/build/highlight.min.js"></script>
<!-- and it's easy to individually load additional languages -->
<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.6.0/build/languages/go.min.js"></script>


ES6 模块​


<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.6.0/build/styles/default.min.css">

<script type="module">
import hljs from 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.6.0/build/es/highlight.min.js';
//  and it's easy to individually load additional languages
import go from 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.6.0/build/es/languages/go.min.js';
hljs.registerLanguage('go', go);
</script>


unpkg​

普通JS​


<link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.6.0/styles/default.min.css">

<script src="https://unpkg.com/@highlightjs/cdn-assets@11.6.0/highlight.min.js"></script>
<!-- and it's easy to individually load additional languages -->
<script src="https://unpkg.com/@highlightjs/cdn-assets@11.6.0/languages/go.min.js"></script>


ES6 模块​


<link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.6.0/styles/default.min.css">

<script type="module">
import hljs from 'https://unpkg.com/@highlightjs/cdn-assets@11.6.0/es/highlight.min.js';
//  and it's easy to individually load & register additional languages
import go from 'https://unpkg.com/@highlightjs/cdn-assets@11.6.0/es/languages/go.min.js';
hljs.registerLanguage('go', go);
</script>


注意

CDN 托管的 highlight.min.js 可能不是最新版本,以致不能包含到所有语言

官网下载​

下载地址:Getting highlight.js

下载页面可以快速生成自定义的单文件压缩包,其中仅包含您想要的语言。

通过 NPM 安装​

使用 NPMYarn 安装:


npm install highlight.js
# or
yarn add highlight.js


或者您可以从源代码构建 NPM 包。

从源代码构建​


node tools/build.js -t node
node tools/build.js -t browser :common
node tools/build.js -t cdn :common


环境要求​

Highlight.js 适用于所有现代浏览器和当前支持的 Node.js 版本。

  • Node.js >= 12.x
  • npm >= 6.x

许可信息​

Highlight.jsBSD 许可下发布。有关详细信息,请参阅我们的许可证文件。​


无极低码 :https://wheart.cn
最新文章