MDX, как расширение Markdown для JavaScript и React, предоставляет возможность использовать изображения в составе документации, блогов и интерактивного контента. Понимание особенностей различных форматов изображений и правильная их интеграция критически важны для оптимизации производительности и качества визуального представления.
MDX поддерживает стандартные форматы изображений, включая:
JPEG (.jpg, .jpeg) Подходит для фотографий и изображений с большим количеством цветов. JPEG использует сжатие с потерями, что уменьшает размер файла, но может снижать качество при многократном сохранении.
PNG (.png) Идеален для изображений с прозрачностью и графики, содержащей текст. PNG использует сжатие без потерь, что сохраняет четкость и качество, но увеличивает размер файла.
SVG (.svg) Векторный формат, оптимальный для логотипов, иконок и схем. SVG масштабируется без потери качества и позволяет изменять свойства через CSS.
GIF (.gif) Используется для анимаций и простых графических элементов с ограниченной цветовой палитрой. Не рекомендуется для больших изображений из-за ограниченной цветности и размера файла.
WebP (.webp) Новый формат, объединяющий преимущества JPEG и PNG: поддерживает сжатие как с потерями, так и без, а также прозрачность и анимацию. Оптимален для веб-проектов с высокой нагрузкой на визуальный контент.
Для вставки изображений используется синтаксис Markdown с возможностью расширения функционала через React-компоненты.
Простой Markdown-синтаксис:

Использование React-компонента:
import Image from './ImageComponent';
<Image src="./images/photo.jpg" alt="Описание изображения" width={600} height={400} />
Преимущества подхода с компонентом:
Обязательные атрибуты:
src — путь к файлу изображения.alt — текстовое описание для доступности и SEO.Рекомендуемые атрибуты:
width и height — помогают браузеру заранее
выделить место под изображение и предотвратить смещение контента.loading="lazy" — откладывает загрузку изображений,
которые находятся вне области видимости, снижая время initial load.title — отображает всплывающую подсказку при
наведении.Оптимизация изображений для MDX:
imagemin.MDX позволяет использовать динамическую загрузку изображений через React-компоненты и хуки:
import { useState, useEffect } from 'react';
export default function DynamicImage({ src, alt }) {
const [imageSrc, setImageSrc] = useState(null);
useEffect(() => {
import(`./images/${src}`).then((module) => setImageSrc(module.default));
}, [src]);
if (!imageSrc) return null;
return <img src={imageSrc} alt={alt} />;
}
Такой подход позволяет:
Для адаптивного отображения рекомендуется использовать атрибуты
srcSet и sizes:
<img
src="./images/photo-800.jpg"
srcSet="./images/photo-400.jpg 400w,
./images/photo-800.jpg 800w,
./images/photo-1200.jpg 1200w"
sizes="(max-width: 600px) 400px,
(max-width: 1200px) 800px,
1200px"
alt="Описание"
/>
srcSet позволяет браузеру выбрать оптимальный размер
изображения в зависимости от устройства и разрешения экрана, что
ускоряет загрузку и снижает потребление трафика.
SVG можно вставлять как файл или inline:
Как файл:
<img src="./images/logo.svg" alt="Логотип" />
Inline с возможностью стилизации:
<svg width="100" height="100" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="40" stroke="black" strokeWidth="3" fill="red" />
</svg>
Inline SVG позволяет:
alt для доступности.Эффективное использование форматов изображений в MDX напрямую влияет на скорость рендеринга страницы, удобство восприятия контента и общую оптимизацию проекта.