MDX (Markdown for JSX) — это расширение Markdown, которое позволяет использовать компоненты React прямо внутри Markdown-документов. Основная цель MDX — объединить удобство написания контента в формате Markdown с гибкостью и мощью JSX-компонентов, что делает его идеальным инструментом для документации, блогов и динамических интерфейсов.
Одной из ключевых возможностей MDX является возможность вставки JSX-кода прямо в текст. Это означает, что в любом месте Markdown-документа можно использовать React-компоненты:
import { Button } from './components/Button';
# Пример MDX
Этот текст сопровождается кнопкой:
<Button onCl ick={() => alert('Нажато!')}>Нажми меня</Button>
Такой подход позволяет создавать интерактивные элементы в документации, блоге или учебных материалах без необходимости переключаться между Markdown и полноценным React-кодом.
MDX поддерживает стандартные механизмы импорта и экспорта модулей JavaScript. Это дает возможность использовать сторонние библиотеки, переиспользовать компоненты и структурировать проект на уровне файлов:
import { Chart } from './components/Chart';
export const meta = {
title: 'Графики в MDX',
date: '2026-03-23'
};
Экспорт метаданных (meta) позволяет строить динамические
списки статей, автоматическую навигацию или фильтры на основе информации
о документах.
MDX позволяет сочетать статический Markdown-текст с динамическим JSX-контентом. Например, можно создать параграф с обычным текстом, а внутри него вставить интерактивную таблицу или визуализацию данных:
# Статистика по проекту
Ниже приведена динамическая диаграмма:
<Chart data={data} type="bar" />
Это упрощает разработку документации и учебных материалов, поскольку контент можно сразу визуализировать без создания отдельного React-приложения.
MDX легко интегрируется с современными инструментами фронтенд-разработки: Next.js, Gatsby, Vite, Astro и другими. Поддержка этих платформ позволяет:
MDX позволяет задавать собственные компоненты для стандартных
элементов Markdown, таких как заголовки, ссылки, списки и блоки кода.
Это достигается через объект components, передаваемый
MDXProvider:
import { MDXProvider } from '@mdx-js/react';
import { CustomH1, CustomParagraph } from './components';
<MDXProvider components={{ h1: CustomH1, p: CustomParagraph }}>
<Content />
</MDXProvider>
Такой подход делает возможным единообразное оформление контента, соблюдение дизайна проекта и расширение функциональности Markdown-элементов.
MDX поддерживает frontmatter, который позволяет хранить структурированную информацию о документе:
---
title: "Введение в MDX"
author: "Разработчик"
tags: ["MDX", "React", "Документация"]
---
# Содержание документа
Эти данные могут быть использованы для динамической генерации списков статей, фильтров, тегов или SEO-параметров страницы.
MDX представляет собой мощный инструмент для разработчиков, создающих интерактивную документацию, образовательные материалы и блоги. Он объединяет простоту Markdown и гибкость React-компонентов, предоставляя полный контроль над контентом и интерфейсом.