MDX — это расширение формата Markdown, позволяющее использовать JSX-компоненты внутри Markdown-документов. Одной из ключевых особенностей MDX является возможность работать с импортом и экспортом модулей, что позволяет интегрировать JavaScript-код и компоненты React прямо в содержимое документа.
В MDX используется стандартный синтаксис ES6 для импорта. Любой
компонент или функция, экспортированная из внешнего файла, может быть
импортирована в MDX-документ с помощью инструкции
import.
import Button from './Button';
import { Header, Footer } from './Layout';
import * as Utils from './utils';
Button — импорт компонента по умолчанию (default
export).{ Header, Footer } — именованный импорт нескольких
сущностей.* as Utils — импорт всех экспортов как объект,
доступный через пространство имен Utils.Импортированные компоненты можно использовать так же, как JSX-теги внутри MDX:
MDX позволяет также импортировать не только компоненты, но и данные или функции:
import { formatDate } from './utils';
Сегодняшняя дата: {formatDate(new Date())}
MDX поддерживает экспорт данных и компонентов, аналогично обычным модулям ES6. Это удобно для интеграции MDX-документов в приложения, где нужен доступ к их содержимому или метаданным.
export const meta = {
title: 'Документация по MDX',
author: 'Иван Иванов',
date: '2026-03-23',
};
meta — объект с метаданными документа, который можно
использовать при генерации навигации или списков статей.export function CustomButton({ label }) {
return ;
}
Этот компонент можно импортировать в другой MDX-файл или React-компонент:
import { CustomButton } from './MyDoc.mdx';
MDX поддерживает использование динамического импорта, что особенно полезно для ленивой загрузки больших компонентов или библиотек:
import dynamic from 'next/dynamic';
const Chart = dynamic(() => import('./Chart'), { ssr: false });
dynamic — функция из Next.js или аналогичного
фреймворка для динамического импорта.ssr: false отключает серверный рендеринг, чтобы
компонент загружался только на клиенте.Динамический импорт позволяет уменьшить размер основной сборки и ускорить рендеринг страниц MDX.
MDX объединяет Markdown-разметку с импортированными компонентами. Это дает возможность:
Пример сочетания текста, импортированного компонента и функции:
import { formatDate } from './utils';
import Button from './Button';
Сегодня: {formatDate(new Date())}
require) использовать
нельзя.В больших приложениях часто создают структуру метаданных в MDX-документах:
export const meta = {
slug: '/docs/mdx-import-export',
tags: ['mdx', 'javascript', 'react'],
published: true,
};
Метаданные можно собрать автоматически с помощью статических генераторов (Next.js, Gatsby) для формирования навигации, списков статей или фильтрации контента.
MDX позволяет импортировать стили и ассеты, если это поддерживает сборщик:
import './styles.css';
import image from './logo.png';

Таким образом MDX становится не просто Markdown-документом, а полноценным модулем с возможностью использовать JSX, данные, стили и динамические ресурсы.