# Highlight.js Highlight.js — Ñто инÑтрумент Ð´Ð»Ñ Ð¿Ð¾Ð´Ñветки ÑинтакÑиÑа, напиÑанный на JavaScript. Он работает и в браузере, и на Ñервере. Он работает Ñ Ð¿Ñ€Ð°ÐºÑ‚Ð¸Ñ‡ÐµÑки любой HTML разметкой, не завиÑит от каких-либо фреймворков и умеет автоматичеÑки определÑть Ñзык. ## Ðачало работы Минимум, что нужно Ñделать Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ highlight.js на веб-Ñтранице — Ñто подключить библиотеку, CSS-Ñтили и вызывать [`initHighlightingOnLoad`][1]: ```html <link rel="stylesheet" href="/path/to/styles/default.css"> <script src="/path/to/highlight.pack.js"></script> <script>hljs.initHighlightingOnLoad();</script> ``` Библиотека найдёт и раÑкраÑит код внутри тегов `<pre><code>`, попытавшиÑÑŒ автоматичеÑки определить Ñзык. Когда автоопределение не Ñрабатывает, можно Ñвно указать Ñзык в атрибуте class: ```html <pre><code class="html">...</code></pre> ``` СпиÑок поддерживаемых клаÑÑов Ñзыков доÑтупен в [Ñправочнике по клаÑÑам][2]. КлаÑÑ Ñ‚Ð°ÐºÐ¶Ðµ можно предварить префикÑами `language-` или `lang-`. Чтобы отключить подÑветку Ð´Ð»Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾-то блока, иÑпользуйте клаÑÑ `nohighlight`: ```html <pre><code class="nohighlight">...</code></pre> ``` ## Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ Чтобы иметь чуть больше ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð·Ð° инициализацией подÑветки, вы можете иÑпользовать функции [`highlightBlock`][3] и [`configure`][4]. Таким образом можно управлÑть тем, *что* и *когда* подÑвечивать. Вот пример инициализации, Ñквивалентной вызову [`initHighlightingOnLoad`][1], но Ñ Ð¸Ñпользованием `document.addEventListener`: ```js document.addEventListener('DOMContentLoaded', (event) => { document.querySelectorAll('pre code').forEach((block) => { hljs.highlightBlock(block); }); }); ``` Ð’Ñ‹ можете иÑпользовать любые теги разметки вмеÑто `<pre><code>`. ЕÑли иÑпользуете контейнер, не ÑохранÑющий переводы Ñтрок, вам нужно Ñказать highlight.js иÑпользовать Ð´Ð»Ñ Ð½Ð¸Ñ… тег `<br>`: ```js hljs.configure({useBR: true}); document.querySelectorAll('div.code').forEach((block) => { hljs.highlightBlock(block); }); ``` Другие опции можно найти в документации функции [`configure`][4]. ## Web Workers ПодÑветку можно запуÑтить внутри web worker'а, чтобы окно браузера не подтормаживало при работе Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼Ð¸ куÑками кода. Ð’ оÑновном Ñкрипте: ```js 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: ```js onmessage = (event) => { importScripts('<path>/highlight.pack.js'); const result = self.hljs.highlightAuto(event.data); postMessage(result.value); }; ``` ## УÑтановка библиотеки Highlight.js можно иÑпользовать в браузере прÑмо Ñ CDN хоÑтинга или Ñкачать индивидуальную Ñборку, а также уÑтановив модуль на Ñервере. Ðа [Ñтранице загрузки][5] подробно опиÑаны вÑе варианты. **Ðе подключайте GitHub напрÑмую.** Библиотека не предназначена Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² виде иÑходного кода, а требует отдельной Ñборки. ЕÑли вам не подходит ни один из готовых вариантов, читайте [документацию по Ñборке][6]. **Файл на CDN Ñодержит не вÑе Ñзыки.** Иначе он будет Ñлишком большого размера. ЕÑли нужного вам Ñзыка нет в [категории "Common"][5], можно дообавить его вручную: ```html <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.4.0/languages/go.min.js"></script> ``` **Про Almond.** Ðужно задать Ð¸Ð¼Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð² оптимизаторе, например: ``` r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js ``` ## Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ Highlight.js раÑпроÑтранÑетÑÑ Ð¿Ð¾Ð´ лицензией BSD. Подробнее читайте файл [LICENSE][7]. ## СÑылки Официальный Ñайт билиотеки раÑположен по адреÑу <https://highlightjs.org/>. Более Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾ API и другим темам раÑположена на <http://highlightjs.readthedocs.io/>. Ðвторы и контрибьюторы перечиÑлены в файле [AUTHORS.ru.txt][8] file. [1]: http://highlightjs.readthedocs.io/en/latest/api.html#inithighlightingonload [2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html [3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block [4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options [5]: https://highlightjs.org/download/ [6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html [7]: https://github.com/highlightjs/highlight.js/blob/master/LICENSE [8]: https://github.com/highlightjs/highlight.js/blob/master/AUTHORS.ru.txt