highlight.js css,highlight.js

Highlight.js

highlight.js?label=latest

highlight.js?color=cyan

highlight.js?label=npm+install

highlight.min.js?label=minified

highlight.js?label=npm+downloads&color=purple

cdn-release?label=jsDelivr+CDN&color=purple

main?label=build

js?label=code+quality

highlight.js

highlight.js?label=dev+deps

discord?icon=discord&label&color=pink

highlight.js?label=issues

open

open

Highlight.js is a syntax highlighter written in JavaScript. It works in

the browser as well as on the server. It can work with pretty much any

markup, doesn’t depend on any other frameworks, and has automatic language

detection.

Contents

Upgrading to Version 11

As always, major releases do contain breaking changes which may require action from users. Please read VERSION_11_UPGRADE.md for a detailed summary of breaking changes and any actions you may need to take.

Upgrading to v10: You really should probably be upgrading to version 11... but if you're coming from version 9 then these documents may still prove helpful.

Support for older versions

Please see SECURITY.md for long-term support information.

Basic Usage

In the Browser

The bare minimum for using highlight.js on a web page is linking to the

library along with one of the themes and calling highlightAll:

hljs.highlightAll();

This will find and highlight code inside of

 tags; it tries

to detect the language automatically. If automatic detection doesn’t

work for you, or you simply prefer to be explicit, you can specify the language manually in the using the class attribute:

...

Plaintext Code Blocks

To apply the Highlight.js styling to plaintext without actually highlighting it, use the plaintext language:

...

Ignoring a Code Block

To skip highlighting of a code block completely, use the nohighlight class:

...

Node.js on the Server

The bare minimum to auto-detect the language and highlight some code.

// load the library and ALL languages

hljs = require('highlight.js');

html = hljs.highlightAuto('

Hello World!

').value

To load only a "common" subset of popular languages:

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

To highlight code with a specific language, use highlight:

html = hljs.highlight('

Hello World!

', {language: 'xml'}).value

See Importing the Library for more examples of require vs import usage, etc. For more information about the result object returned by highlight or highlightAuto refer to the api docs.

Supported Languages

Highlight.js supports over 180 languages in the core library. There are also 3rd party

language definitions available to support even more languages. You can find the full list of supported languages in SUPPORTED_LANGUAGES.md.

Custom Usage

If you need a bit more control over the initialization of

Highlight.js, you can use the highlightElement and configure

functions. This allows you to better control what to highlight and when.

For example, here’s the rough equivalent of calling highlightAll but doing the work manually instead:

document.addEventListener('DOMContentLoaded', (event) => {

document.querySelectorAll('pre code').forEach((el) => {

hljs.highlightElement(el);

});

});

Please refer to the documentation for configure options.

Using custom HTML

We strongly recommend

 wrapping for code blocks. It's quite

semantic and "just works" out of the box with zero fiddling. It is possible to

use other HTML elements (or combos), but you may need to pay special attention to

preserving linebreaks.

Let's say your markup for code blocks uses divs:

...

To highlight such blocks manually:

// first, find all the div.code blocks

document.querySelectorAll('div.code').forEach(el => {

// then highlight each

hljs.highlightElement(el);

});

Without using a tag that preserves linebreaks (like pre) you'll need some

additional CSS to help preserve them. You could also pre and post-process line

breaks with a plug-in, but we recommend using CSS.

To preserve linebreaks inside a div using CSS:

div.code {

white-space: pre;

}

Using with Vue.js

See highlightjs/vue-plugin for a simple Vue plugin that works great with Highlight.js.

An example of vue-plugin in action:

Using Web Workers

You can run highlighting inside a web worker to avoid freezing the browser

window while dealing with very big chunks of code.

In your main script:

addEventListener('load', () => {

const code = document.querySelector('#code');

const worker = new Worker('worker.js');

worker.onmessage = (event) => { code.innerHTML = event.data; }

worker.postMessage(code.textContent);

});

In worker.js:

onmessage = (event) => {

importScripts('/highlight.min.js');

const result = self.hljs.highlightAuto(event.data);

postMessage(result.value);

};

Importing the Library

First, you'll likely be installing the library via npm or yarn -- see Getting the Library.

Node.js / require

Requiring the top-level library will load all languages:

// require the highlight.js library, including all languages

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

const highlightedCode = hljs.highlightAuto('Hello World!').value

For a smaller footprint, load our common subset of languages (the same set used for our default web build).

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

For the smallest footprint, load only the languages you need:

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

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

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

ES6 Modules / import

The default import will register all languages:

import hljs from 'highlight.js';

It is more efficient to import only the library and register the languages you need:

import hljs from 'highlight.js/lib/core';

import javascript from 'highlight.js/lib/languages/javascript';

hljs.registerLanguage('javascript', javascript);

If your build tool processes CSS imports, you can also import the theme directly as a module:

import hljs from 'highlight.js';

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

Getting the Library

You can get highlight.js as a hosted, or custom-build, browser script or

as a server module. Right out of the box the browser script supports

both AMD and CommonJS, so if you wish you can use RequireJS or

Browserify without having to build from source. The server module also

works perfectly fine with Browserify, but there is the option to use a

build specific to browsers rather than something meant for a server.

Do not link to GitHub directly. The library is not supposed to work straight

from the source, it requires building. If none of the pre-packaged options

work for you refer to the building documentation.

On Almond. You need to use the optimizer to give the module a name. For

example:

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

Fetch via CDN

A prebuilt version of Highlight.js bundled with many common languages is hosted by several popular CDNs.

When using Highlight.js via CDN you can use Subresource Integrity for additional security. For details

see DIGESTS.md.

cdnjs (link)

jsdelivr (link)

unpkg (link)

Note: The CDN-hosted highlight.min.js package doesn't bundle every language. It would be

very large. You can find our list of "common" languages that we bundle by default on our download page.

Download prebuilt CDN assets

You can also download and self-host the same assets we serve up via our own CDNs. We publish those builds to the cdn-release GitHub repository. You can easily pull individual files off the CDN endpoints with curl, etc; if say you only needed highlight.min.js and a single CSS file.

There is also an npm package @highlightjs/cdn-assets if pulling the assets in via npm or yarn would be easier for your build process.

Download from our website

The download page can quickly generate a custom single-file minified bundle including only the languages you desire.

Note: Building from source can produce slightly smaller builds than the website download.

Install via NPM package

Our NPM package including all supported languages can be installed with NPM or Yarn:

npm installhighlight.js

# or

yarn add highlight.js

Alternatively, you can build the NPM package from source.

Build from Source

The current source code is always available on GitHub.

node tools/build.js -t node

node tools/build.js -t browser :common

node tools/build.js -t cdn :common

See our building documentation for more information.

Requirements

Highlight.js works on all modern browsers and currently supported Node.js versions. You'll need the following software to contribute to the core library:

Node.js >= 12.x

npm >= 6.x

License

Highlight.js is released under the BSD License. See our LICENSE file

for details.

Links

The official website for the library is https://highlightjs.org/.

Further in-depth documentation for the API and other topics is at

http://highlightjs.readthedocs.io/.

A list of the Core Team and contributors can be found in the CONTRIBUTORS.md file.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值