Для работы с библиотекой markdown-it необходимо сначала
установить её через npm или yarn:
npm install markdown-it
или
yarn add markdown-it
После установки создаётся объект парсера:
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();
Объект md предоставляет метод .render(),
который принимает строку с Markdown и возвращает HTML.
const result = md.render('# Заголовок\n\nТекст абзаца');
console.log(result);
Результатом будет строка:
<h1>Заголовок</h1>
<p>Текст абзаца</p>
Markdown-it поддерживает оба типа заголовков:
#:# H1
## H2
### H3
Заголовок H1
============
Заголовок H2
------------
При преобразовании они становятся соответствующими тегам
<h1>–<h6>.
Обычный текст разделяется пустой строкой:
Это первый абзац.
Это второй абзац.
Markdown-it превращает это в:
<p>Это первый абзац.</p>
<p>Это второй абзац.</p>
Для жёсткого разрыва строки используется двойной пробел перед переводом строки:
Строка с разрывом
Следующая строка
Преобразуется в:
<p>Строка с разрывом<br>
Следующая строка</p>
Поддерживаются ненумерованные и нумерованные списки.
- Пункт 1
- Пункт 2
- Подпункт
* Альтернативный маркер
Результат:
<ul>
<li>Пункт 1</li>
<li>Пункт 2
<ul>
<li>Подпункт</li>
</ul>
</li>
<li>Альтернативный маркер</li>
</ul>
1. Первый
2. Второй
3. Третий
Результат:
<ol>
<li>Первый</li>
<li>Второй</li>
<li>Третий</li>
</ol>
Markdown-it корректно поддерживает вложенные списки и их смешанные типы.
**Жирный** или __Жирный__
Результат:
<strong>Жирный</strong>
*Курсив* или _Курсив_
Результат:
<em>Курсив</em>
~~Зачёркнуто~~
Результат:
<s>Зачёркнуто</s>
**Жирный и *курсив***
Результат:
<strong>Жирный и <em>курсив</em></strong>
Markdown-it умеет корректно обрабатывать вложенные и пересекающиеся стили.
[Текст ссылки](https://example.com)
Результат:
<a href="https://example.com">Текст ссылки</a>
[Текст ссылки](https://example.com "Заголовок")
Результат:
<a href="https://example.com" title="Заголовок">Текст ссылки</a>

Результат:
<img src="https://example.com/image.png" alt="Alt текст" title="Заголовок изображения">
Markdown-it поддерживает блочные цитаты:
> Это цитата.
>
> С новой строки.
Результат:
<blockquote>
<p>Это цитата.</p>
<p>С новой строки.</p>
</blockquote>
Используем `код` внутри строки.
Результат:
<p>Используем <code>код</code> внутри строки.</p>
```javascript
console.log("Hello, world!");
Результат:
```html
<pre><code class="language-javascript">console.log("Hello, world!");
</code></pre>
Markdown-it поддерживает подсветку синтаксиса через плагины.
---
***
___
Все три варианта создают:
<hr>
Markdown-it поддерживает стандартные таблицы GitHub Flavored Markdown:
| Имя | Возраст |
|------|--------|
| Иван | 25 |
| Анна | 30 |
Результат:
<table>
<thead>
<tr>
<th>Имя</th>
<th>Возраст</th>
</tr>
</thead>
<tbody>
<tr>
<td>Иван</td>
<td>25</td>
</tr>
<tr>
<td>Анна</td>
<td>30</td>
</tr>
</tbody>
</table>
Выравнивание колонок поддерживается с помощью двоеточий:
| Левый | Центр | Правый |
|:------|:----:|------:|
| A | B | C |
Markdown-it позволяет гибко настраивать поведение через опции при создании объекта:
const md = new MarkdownIt({
html: true, // Разрешает HTML в Markdown
linkify: true, // Превращает URL в ссылки
typographer: true // Использует типографские символы
});
Подключение плагинов расширяет функционал:
const markdownItFootnote = require('markdown-it-footnote');
md.use(markdownItFootnote);
После этого можно использовать сноски в Markdown:
Текст с сноской.[^1]
[^1]: Это сама сноска.
highlight.js или Prism.Markdown-it обеспечивает строгую совместимость с CommonMark, расширяемость через плагины и высокую производительность, что делает его подходящим инструментом для сложных систем рендеринга Markdown в веб-приложениях.