Библиотека Markdown-it предоставляет мощный механизм
для обработки Markdown-текста в JavaScript. Основными методами для
преобразования Markdown являются render и
parse. Понимание их различий и особенностей крайне важно
для эффективного использования библиотеки.
renderМетод render предназначен для преобразования
Markdown-текста в HTML. Он выполняет полный цикл обработки: от
токенизации до генерации финального HTML-кода.
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();
const markdownText = '# Заголовок\n\nТекст с **жирным** выделением.';
const result = md.render(markdownText);
console.log(result);
Пошаговое описание работы render:
Ключевые моменты:
render всегда возвращает готовый HTML.parseМетод parse возвращает токены, а не
HTML. Он используется для детального анализа Markdown-текста и позволяет
получать структуру документа для последующей обработки.
const tokens = md.parse(markdownText, {});
console.log(tokens);
Особенности метода parse:
Возвращает массив объектов токенов. Каждый токен содержит свойства:
type — тип элемента (например,
heading_open, paragraph_open,
text).tag — HTML-тег, соответствующий токену.content — текстовое содержимое токена.level — уровень вложенности.Не выполняет генерацию HTML.
Может использоваться для анализа структуры документа, создания кастомных рендереров или конвертации Markdown в другие форматы.
Пример анализа токенов:
tokens.forEach(token => {
console.log(token.type, token.tag, token.content);
});
Это позволяет точно определить, какие элементы присутствуют в тексте, их вложенность и содержимое.
render и
parse| Характеристика | render |
parse |
|---|---|---|
| Возвращаемое значение | HTML строка | Массив токенов |
| Назначение | Быстрое преобразование в HTML | Анализ и обработка структуры текста |
| Подходит для | Генерации готового контента | Кастомной логики обработки Markdown |
| Работа с плагинами | Полная поддержка | Частичная, только на уровне токенов |
Метод parse часто используется вместе с
кастомными рендерерами. Например, можно сгенерировать
HTML только для определённых элементов:
tokens.forEach(token => {
if (token.type === 'heading_open') {
console.log(`<${token.tag} class="custom-heading">`);
} else if (token.type === 'text') {
console.log(token.content);
} else if (token.type === 'heading_close') {
console.log(`</${token.tag}>`);
}
});
Таким образом, parse предоставляет полный контроль над
преобразованием Markdown в любые форматы, выходящие за пределы
стандартного HTML.
Оба метода поддерживают опции Markdown-it:
html — разрешает встроенный HTML в Markdown.linkify — автоматически превращает URL в ссылки.typographer — активирует типографические преобразования
(-- → –, ... →
…).Пример с включением настроек:
const mdCustom = new MarkdownIt({
html: true,
linkify: true,
typographer: true
});
const html = mdCustom.render(markdownText);
Эти настройки действуют как на render, так и на
parse (для структуры токенов).
render — для быстрого преобразования Markdown в HTML,
удобен для рендеринга веб-страниц.parse — для анализа и модификации структуры документа,
удобен при создании кастомных инструментов.Эффективное применение render и parse
позволяет строить как простые конвертеры Markdown, так и сложные системы
обработки текста с поддержкой плагинов, кастомных рендереров и различных
форматов вывода.