Markdown-it — гибкая и расширяемая библиотека для парсинга Markdown в JavaScript. Основное её преимущество заключается в возможности легко интегрировать плагины, добавляющие новые синтаксические конструкции или изменяющие поведение стандартного Markdown. Ниже рассматриваются наиболее востребованные плагины, их возможности и примеры использования.
Назначение: Автоматическая генерация якорей для заголовков.
<h1>–<h6> элементов.Пример использования:
const MarkdownIt = require('markdown-it');
const markdownItAnchor = require('markdown-it-anchor');
const md = new MarkdownIt();
md.use(markdownItAnchor, {
level: [1, 2, 3], // заголовки, для которых генерируются якоря
slugify: s => s.trim().toLowerCase().replace(/\s+/g, '-') // кастомная функция для slug
});
const result = md.render('# Пример заголовка');
console.log(result);
Особенности:
slugify.Назначение: Добавление поддержки сносок, как в LaTeX или Википедии.
[^1] и
определять их в конце документа.Пример использования:
const MarkdownIt = require('markdown-it');
const markdownItFootnote = require('markdown-it-footnote');
const md = new MarkdownIt();
md.use(markdownItFootnote);
const result = md.render(`
Текст с сноской[^1].
[^1]: Текст сноски.
`);
console.log(result);
Особенности:
Назначение: Генерация оглавления на основе заголовков Markdown-документа.
markdown-it-anchor.Пример использования:
const MarkdownIt = require('markdown-it');
const markdownItAnchor = require('markdown-it-anchor');
const tocDoneRight = require('markdown-it-toc-done-right');
const md = new MarkdownIt();
md.use(markdownItAnchor);
md.use(tocDoneRight);
const result = md.render(`
[[toc]]
# Глава 1
## Подглава 1.1
# Глава 2
`);
console.log(result);
Особенности:
Назначение: Рендеринг математических формул с использованием синтаксиса LaTeX.
Пример использования:
const MarkdownIt = require('markdown-it');
const markdownItKatex = require('markdown-it-katex');
const md = new MarkdownIt();
md.use(markdownItKatex);
const result = md.render('Инлайн формула $E=mc^2$ и блочная формула: $$\\int_0^1 x^2 dx$$');
console.log(result);
Особенности:
Назначение: Преобразование текстовых смайликов в графические эмодзи.
:smile:,
:heart: и другие.Пример использования:
const MarkdownIt = require('markdown-it');
const markdownItEmoji = require('markdown-it-emoji');
const md = new MarkdownIt();
md.use(markdownItEmoji);
const result = md.render('Привет :smile:');
console.log(result);
Особенности:
md.renderer.rules.emoji.Назначение: Создание пользовательских контейнеров для блоков контента.
Пример использования:
const MarkdownIt = require('markdown-it');
const markdownItContainer = require('markdown-it-container');
const md = new MarkdownIt();
md.use(markdownItContainer, 'note', {
render(tokens, idx) {
if (tokens[idx].nesting === 1) {
return '<div class="note">';
} else {
return '</div>';
}
}
});
const result = md.render(`
:::note
Это блок заметки.
:::
`);
console.log(result);
Особенности:
Назначение: Поддержка сокращений и аббревиатур.
*[HTML]: Hyper Text Markup Language.Пример использования:
const MarkdownIt = require('markdown-it');
const markdownItAbbr = require('markdown-it-abbr');
const md = new MarkdownIt();
md.use(markdownItAbbr);
const result = md.render(`
Это пример аббревиатуры HTML.
*[HTML]: Hyper Text Markup Language
`);
console.log(result);
Особенности:
Эти плагины покрывают большинство практических сценариев работы с Markdown в JavaScript, от улучшения навигации и оформления до поддержки научной и технической документации. Их комбинирование позволяет создавать сложные и гибкие системы рендеринга Markdown, полностью адаптированные под конкретные задачи.