MDX — это расширение синтаксиса Markdown, которое позволяет интегрировать JSX-компоненты прямо в текст документа. Основное отличие MDX от стандартного Markdown заключается в возможности использовать React-компоненты, сохраняя привычный текстовый формат документации.
Markdown предназначен для разметки текста: заголовков, списков, ссылок, изображений, кода и таблиц. Он прост и универсален, но не поддерживает интерактивные элементы.
MDX добавляет к этому возможность использовать полноценные JSX-компоненты. Например, вместо простого блока кода можно вставить компонент с подсветкой синтаксиса или интерактивную демонстрацию.
Пример простого кода в Markdown:
# Заголовок
- Пункт 1
- Пункт 2
```js
console.log("Hello, world!");
Аналогичный пример в MDX с React-компонентом:
```mdx
import CodeBlock from './CodeBlock'
# Заголовок
<CodeBlock language="js">
{`console.log("Hello, world!");`}
</CodeBlock>
В этом примере MDX позволяет интегрировать компонент
CodeBlock прямо в текст документации, что невозможно в
чистом Markdown.
JSX — это синтаксис для описания React-компонентов. Он позволяет создавать интерфейсы, но не предназначен для написания текстовой документации.
MDX сочетает возможности Markdown и JSX: можно писать обычный текст с разметкой и одновременно вставлять React-компоненты.
Пример JSX, который выводит текст и компонент:
function App() {
return (
<div>
<h1>Заголовок</h1>
<CodeBlock language="js">
{`console.log("Hello, world!");`}
</CodeBlock>
</div>
);
}
MDX позволяет сделать этот код более удобным для документации, так как текст и компоненты смешиваются в одном файле без необходимости оборачивать каждый заголовок и абзац в JSX-теги.
Импорт компонентов В MDX можно импортировать любые React-компоненты в начале файла:
import Alert from './Alert'Использование компонентов Компоненты вставляются прямо в текст, как обычные HTML-теги:
<Alert type="warning">Внимание! Это важное сообщение.</Alert>Интерполяция значений Внутри компонентов можно
использовать JavaScript-выражения через {}:
<Alert>{`Текущая дата: ${new Date().toLocaleDateString()}`}</Alert>Межкомпонентное взаимодействие Компоненты MDX можно связывать между собой через пропсы, что позволяет создавать интерактивные документы с динамическим содержимым.
MDX сочетает в себе удобство Markdown и функциональность JSX, создавая среду для написания современной документации и интерактивного контента. Это делает библиотеку идеальной для технических блогов, документации к продуктам и обучающих материалов, где необходима интеграция React-компонентов.