MDX (Markdown for JSX) сочетает возможности Markdown и JSX, предоставляя мощный инструмент для создания динамического и интерактивного контента. Одним из ключевых элементов эффективной работы с MDX являются шаблоны и макросы, которые позволяют ускорить разработку и повысить повторное использование компонентов.
В MDX любая JSX-компонента может выступать в роли шаблона. Например, если необходимо многократно вставлять блоки с одинаковой структурой, создаётся отдельная компонентa:
const InfoBox = ({ title, children }) => (
{title}
{children}
);
Далее этот шаблон используется в MDX-файле:
Здесь размещается критическая информация.
Используйте повторно этот компонент для любых заметок.
Ключевые преимущества:
MDX поддерживает возможность внедрения JavaScript-выражений прямо в текст. Это открывает доступ к макросам — функциям, которые генерируют повторяющийся контент.
Пример макроса для генерации списка ссылок:
const LinkList = ({ links }) => (
{links.map((link, index) => (
-
{link.text}
))}
);
Использование макроса в MDX:
Особенности макросов:
Параметры позволяют шаблонам быть максимально гибкими. Рассмотрим
компонент Card с параметрами цвета и размера:
const Card = ({ title, content, color = 'lightblue', size = 'medium' }) => (
{title}
{content}
);
MDX-файл:
Преимущества параметризации:
MDX позволяет вставлять JavaScript-выражения прямо в текст:
Сегодняшняя дата: {new Date().toLocaleDateString()}
Результат сложения: {5 + 7}
Это открывает возможности для макросов, которые вычисляют данные в реальном времени. Например:
const Greeting = ({ name }) => `Привет, ${name}! Сегодня отличная погода.`;
Использование в MDX:
{Greeting({ name: 'Алексей' })}
Особенности:
Для больших проектов важно структурировать шаблоны и макросы:
Компоненты в отдельной папке Все повторяющиеся
элементы вынести в /components.
Импорт шаблонов в MDX
import { InfoBox, Card } from '../components'Использование параметров и пропсов Минимизировать дублирование кода и сделать контент гибким.
Макросы для динамических данных Применять функции и вычисления для генерации повторяющихся блоков на основе массивов или объектов.
Главная сила MDX — возможность использовать шаблоны и макросы прямо в тексте Markdown:
# Документация
Используйте этот блок для всех критических уведомлений.
Текущая версия приложения: {process.env.APP_VERSION}
Преимущества подхода: