在网页上使用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>
// 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
的初始化进行更多控制,可以使用 highlightElement
和 configure
函数。这使您可以更好地控制要高亮显示的内容。例如:
document.addEventListener('DOMContentLoaded', (event) => {
document.querySelectorAll('pre code').forEach((el) => {
hljs.highlightElement(el);
});
});
更多配置选项。
强烈建议 <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;
}
下载 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
来处理
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);
};
首先,您可能会通过 npm
或 yarn
来获取 highlight.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
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
支持AMD
和CommonJS
规范,开箱即用,像通过RequireJS
或 Browserify
获取,不需要做任何其他操作,当然您也可以使用r.js
来构建:
r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js
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
或 Yarn
安装:
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