Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Разрешить предварительный синтаксический анализ AST Markdown для SSR / гидратации"v8.11.028.05.2026
- "Добавлена поддержка файлов `.content.md`"v8.10.019.05.2026
- "Добавлен объект плагина `intlayerMarkdown`; используйте `app.use(intlayerMarkdown)` вместо `app.use(installIntlayerMarkdown)`"v8.5.024.03.2026
- "перенос импорта из `{{framework}}-intlayer` в `{{framework}}-intlayer/markdown`"v8.5.024.03.2026
- "Добавление утилит MarkdownRenderer / useMarkdownRenderer / renderMarkdown и опции forceInline"v8.0.022.01.2026
- "Автоматическое декорирование Markdown-контента, поддержка MDX и SSR"v8.0.018.01.2026
- "Инициализация истории"v5.5.1029.06.2025
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Markdown / Форматированный текст
Intlayer поддерживает форматированный текстовый контент, определенный с использованием синтаксиса Markdown. Это позволяет легко писать и поддерживать контент со сложным форматированием, такой как блоги, статьи и многое другое.
Объявление Markdown-контента
Вы можете объявить Markdown-контент с помощью функции md или просто как строку (если она содержит синтаксис Markdown).
Начиная с версии 8.10.0, вы можете объявлять Markdown-контент непосредственно в файлах .content.md. Intlayer автоматически обнаружит и проанализирует Markdown-контент.
Начиная с версии 8.10.0, вы можете объявлять содержимое Markdown непосредственно в файлах .content.md. Intlayer будет
автоматически обнаруживать и анализировать содержимое Markdown.
Копировать код в буфер обмена
Поле locale в front-matter определяет локаль контента. Оно необязательно. Если оно не указано, Intlayer будет использовать локаль по умолчанию, которая также используется в качестве резервной локали (fallback), если перевод для конкретной локали недоступен.
Пример структуры файлов:
Копировать код в буфер обмена
Вы можете добавить в front-matter любые свойства, определенные в определении словаря
Используйте функцию md для явного объявления Markdown-контента. Это полезно, если вы хотите гарантировать, что строка будет обрабатываться как Markdown, даже если она не содержит явного синтаксиса.
Копировать код в буфер обмена
Если строка содержит общие признаки Markdown (такие как заголовки, списки, ссылки и т. д.), Intlayer автоматически преобразует ее.
Копировать код в буфер обмена
Рендеринг Markdown
Intlayer предоставляет два независимых способа рендеринга Markdown:
Через
useIntlayer— Intlayer автоматически преобразует узелmdв нативный вывод фреймворка (JSX, VNode, HTML-строка).- Frontmatter парсится и предоставляется как
.metadata. Вы можете переопределить рендеринг на двух уровнях — глобально с помощьюMarkdownProvider(или эквивалента для вашего фреймворка) и локально для каждого узла с помощью.use(). Оба метода можно комбинировать;.use()имеет приоритет надMarkdownProvider, который, в свою очередь, имеет приоритет над поведением по умолчанию.
- Frontmatter парсится и предоставляется как
Вспомогательные утилиты —
<MarkdownRenderer />,useMarkdownRenderer()иrenderMarkdown()являются автономными инструментами, которые принимают только необработанные строки Markdown (raw strings). Они не зависят отuseIntlayerи не работают с декорированными узлами, которые он возвращает.
Рендеринг Markdown поддерживает MDX — используйте любой JSX компонент или компонент фреймворка по имени прямо в вашем Markdown.
1. Автоматический рендеринг (через useIntlayer)
Markdown-узлы могут быть отрисованы напрямую как JSX.
Копировать код в буфер обмена
Если MarkdownProvider отсутствует, intlayer будет отрисовывать markdown, используя стандартный парсер Markdown в JSX.
Вы также можете предоставить локальные переопределения для конкретных узлов, используя метод .use():
Копировать код в буфер обмена
Вы можете получить Markdown в виде строки:
Копировать код в буфер обмена
И вы можете получить доступ к метаданным вашего markdown, например:
Копировать код в буфер обмена
Markdown-узлы могут быть отрисованы напрямую как JSX.
Копировать код в буфер обмена
Если MarkdownProvider отсутствует, intlayer будет отрисовывать markdown, используя стандартный парсер Markdown в JSX.
Вы также можете предоставить локальные переопределения для конкретных узлов, используя метод .use():
Копировать код в буфер обмена
Вы можете получить Markdown в виде строки:
Копировать код в буфер обмена
И вы можете получить доступ к метаданным вашего markdown, например:
Копировать код в буфер обмена
В Vue контент Markdown можно отрендерить с помощью встроенного элемента component или напрямую как узел.
Копировать код в буфер обмена
Настройте глобально через плагин intlayerMarkdown (поддерживает пользовательские компоненты MDX):
Копировать код в буфер обмена
Если плагин intlayerMarkdown не установлен, Intlayer будет выполнять рендеринг с использованием компилятора по умолчанию.
Вы также можете предоставить локальные переопределения для конкретных узлов, используя метод .use():
Копировать код в буфер обмена
Вы можете получить Markdown в виде строки:
Копировать код в буфер обмена
И вы можете получить доступ к метаданным вашего markdown, например:
Копировать код в буфер обмена
Svelte по умолчанию рендерит Markdown как HTML-строку. Используйте {@html} для его рендеринга.
Копировать код в буфер обмена
Если MarkdownProvider отсутствует, Intlayer будет рендерить markdown с использованием компилятора по умолчанию.
Вы также можете предоставить локальные переопределения для конкретных узлов, используя метод .use():
Копировать код в буфер обмена
Вы можете получить Markdown в виде строки:
Копировать код в буфер обмена
И вы можете получить доступ к метаданным вашего markdown, например:
Копировать код в буфер обмена
Preact поддерживает узлы Markdown непосредственно в JSX.
Копировать код в буфер обмена
Если MarkdownProvider отсутствует, intlayer будет отрисовывать markdown, используя стандартный парсер Markdown в JSX.
Вы также можете предоставить локальные переопределения для конкретных узлов, используя метод .use():
Копировать код в буфер обмена
Вы можете получить Markdown в виде строки:
Копировать код в буфер обмена
И вы можете получить доступ к метаданным вашего markdown, например:
Копировать код в буфер обмена
Solid поддерживает узлы Markdown непосредственно в JSX.
Копировать код в буфер обмена
Если MarkdownProvider отсутствует, intlayer будет отрисовывать markdown, используя стандартный парсер Markdown в JSX.
Вы также можете предоставить локальные переопределения для конкретных узлов, используя метод .use():
Копировать код в буфер обмена
Вы можете получить Markdown в виде строки:
Копировать код в буфер обмена
И вы можете получить доступ к метаданным вашего markdown, например:
Копировать код в буфер обмена
Angular использует директиву [innerHTML] для рендеринга контента Markdown.
Копировать код в буфер обмена
Если провайдер IntlayerMarkdown не настроен, Intlayer будет выполнять рендеринг с использованием компилятора по умолчанию.
Вы также можете предоставить локальные переопределения для конкретных узлов, используя метод .use():
Копировать код в буфер обмена
Вы можете получить Markdown в виде строки:
Копировать код в буфер обмена
И вы можете получить доступ к метаданным вашего markdown, например:
Копировать код в буфер обмена
2. Вспомогательные утилиты (только строки Markdown)
Эти утилиты отображают сырые строки Markdown и независимы от useIntlayer. Используйте их, когда вам нужно отобразить Markdown из источников, отличных от ваших словарей.
Компонент <MarkdownRenderer />
Отобразите строку Markdown с конкретными параметрами.
Копировать код в буфер обмена
Hook useMarkdownRenderer()
Получить предварительно настроенную функцию рендера.
Копировать код в буфер обмена
Утилита renderMarkdown()
Автономная утилита для рендеринга вне компонентов.
Копировать код в буфер обмена
Компонент <MarkdownRenderer />
Отрендерить строку Markdown с конкретными опциями.
Копировать код в буфер обмена
Hook useMarkdownRenderer()
Получить предварительно настроенную функцию рендеринга.
Копировать код в буфер обмена
Утилита renderMarkdown()
Самостоятельная утилита для рендеринга вне компонентов.
Копировать код в буфер обмена
Компонент <MarkdownRenderer />
Копировать код в буфер обмена
Компонент <MarkdownRenderer />
Копировать код в буфер обмена
useMarkdownRenderer() Hook
Копировать код в буфер обмена
Утилита renderMarkdown()
Копировать код в буфер обмена
Компонент <MarkdownRenderer />
Копировать код в буфер обмена
useMarkdownRenderer() Hook
Копировать код в буфер обмена
renderMarkdown() Утилита
Копировать код в буфер обмена
<MarkdownRenderer /> компонент
Копировать код в буфер обмена
Hook useMarkdownRenderer()
Копировать код в буфер обмена
Утилита renderMarkdown()
Копировать код в буфер обмена
Сервис IntlayerMarkdownService
Отрендеринг Markdown строки с использованием сервиса.
Копировать код в буфер обмена
Глобальная конфигурация с MarkdownProvider
MarkdownProvider (или его эквивалент для конкретного фреймворка) настраивает pipeline рендеринга Markdown для всего приложения. Это применяется как к автоматическому рендерингу useIntlayer, так и к вспомогательным утилитам. Параметры, установленные здесь, являются значениями по умолчанию — .use() переопределяет их на уровне узла.
Копировать код в буфер обмена
MDX поддерживается — любое имя компонента, используемое внутри вашего Markdown (например<MyCustomJSXComponent />), разрешается по отношению к картеcomponents.
Вы также можете использовать свой собственный renderer Markdown:
Копировать код в буфер обмена
Динамический импорт вашего renderer Markdown — это хороший способ уменьшить размер bundle приложения.
Копировать код в буфер обмена
MDX поддерживается — любое имя компонента, используемое внутри вашего Markdown (например<MyCustomJSXComponent />), разрешается по отношению к картеcomponents.
Вы также можете использовать свой собственный renderer Markdown:
Копировать код в буфер обмена
Динамический импорт вашего renderer Markdown — это хороший способ уменьшить размер bundle приложения.
Копировать код в буфер обмена
MDX поддерживается — любое имя компонента, используемое внутри вашего Markdown (например<MyCustomJSXComponent />), разрешается по отношению к картеcomponents.
Вы также можете использовать свой собственный renderer Markdown:
Копировать код в буфер обмена
Динамический импорт вашего renderer Markdown — это хороший способ уменьшить размер bundle приложения.
Копировать код в буфер обмена
MDX поддерживается — любое имя компонента, используемое внутри вашего Markdown (например<MyCustomJSXComponent />), разрешается по отношению к картеcomponents.
Вы также можете использовать свой собственный renderer Markdown:
Копировать код в буфер обмена
Динамический импорт вашего renderer Markdown — это хороший способ уменьшить размер bundle приложения.
Копировать код в буфер обмена
MDX поддерживается — любое имя компонента, используемое внутри вашего Markdown (например<MyCustomJSXComponent />), разрешается по отношению к картеcomponents.
Вы также можете использовать свой собственный renderer Markdown:
Копировать код в буфер обмена
Динамический импорт вашего renderer Markdown — это хороший способ уменьшить размер bundle приложения.
Копировать код в буфер обмена
MDX поддерживается — любое имя компонента, используемое внутри вашего Markdown (например<MyCustomJSXComponent />), разрешается по отношению к картеcomponents.
Вы также можете использовать свой собственный renderer Markdown:
Копировать код в буфер обмена
Динамический импорт вашего renderer Markdown — это хороший способ уменьшить размер bundle приложения.
Копировать код в буфер обмена
MDX поддерживается — любое имя компонента, используемое внутри вашего Markdown (например<MyCustomJSXComponent />), разрешается по отношению к картеcomponents.
Вы также можете использовать свой собственный renderer Markdown:
Копировать код в буфер обмена
Динамический импорт вашего renderer Markdown — это хороший способ уменьшить размер bundle приложения.
Suspense
Рендерер Markdown в Intlayer загружается динамически. Несмотря на оптимизацию, базовый фрагмент парсера составляет около 55 КБ. Его синхронная загрузка задерживает первоначальный рендеринг страницы и ухудшает First Contentful Paint (FCP).
Чтобы предотвратить блокировку пользовательского интерфейса, Intlayer интегрируется с API React Suspense. Он загружает парсер в фоновом режиме и выдает Promise во время загрузки.
Оберните любой компонент, рендерящий Intlayer Markdown, в границу <Suspense>. Это отобразит локализованное резервное состояние во время загрузки фрагмента, позволяя остальной части вашего DOM рендериться немедленно.
Предупреждение: Если вы не предоставите границу <Suspense>, React приостановит работу на корневом уровне или заблокирует рендеринг всего дерева компонентов до тех пор, пока фрагмент размером 55 КБ не будет полностью загружен.
В маршрутизаторе Next.js App Router вы можете использовать либо React Suspense для клиентских компонентов, либо файл loading.tsx для серверных компонентов.
Клиентский компонент:
Копировать код в буфер обмена
Серверный компонент с loading.tsx:
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
В Vue есть встроенный компонент <Suspense>. Оберните компонент, рендерящий содержимое Markdown, в границу <Suspense>.
Копировать код в буфер обмена
Svelte не имеет эквивалента API Suspense. Используйте блок {#await} для обработки асинхронного рендеринга содержимого Markdown.
Копировать код в буфер обмена
Preact поддерживает API React Suspense через preact/compat.
Копировать код в буфер обмена
В Solid есть собственный компонент <Suspense> из solid-js.
Копировать код в буфер обмена
Angular не имеет API Suspense. Используйте отложенные представления (@defer) для обработки лениво загружаемого содержимого Markdown (требуется Angular 17+).
Копировать код в буфер обмена
Рендеринг на стороне сервера (SSR) и гидратация
По сравнению с другими парсерами Markdown, такими как remark / rehype, Intlayer Markdown не имеет зависимостей и работает как на клиенте, так и на сервере.
Однако Intlayer оптимизирует синтаксический анализ для фреймворков серверного рендеринга (SSR) (таких как Next.js App Router, React Router, Nuxt, SvelteKit и т. д.).
Вместо отправки необработанных строк Markdown клиенту и их анализа в браузере (что приводит к снижению производительности), Intlayer позволяет предварительно проанализировать Markdown в абстрактное синтаксическое дерево (AST) на сервере.
Вы можете использовать функцию parseMarkdown из пакета Intlayer вашего фреймворка на стороне сервера для генерации сериализуемого AST (объекта ParsedMarkdown) и передачи его непосредственно на фронтенд. Все утилиты рендеринга Intlayer (такие как <MarkdownRenderer>, useMarkdownRenderer и т. д.) автоматически принимают этот объект AST и плавно рендерят его.
Пример в архитектуре Сервер/Клиент
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Angular SSR обычно разрешает данные на сервере во время первоначальной загрузки и выполняет гидратацию на клиенте. Вы можете использовать резолверы для передачи AST.
Копировать код в буфер обмена
Копировать код в буфер обмена
Этот подход гарантирует, что логика анализа Markdown полностью выполняется на сервере, что значительно сокращает время выполнения на стороне клиента и повышает скорость первоначальной гидратации.
Справочник по опциям
Эти параметры могут быть переданы в MarkdownProvider, MarkdownRenderer, useMarkdownRenderer и renderMarkdown.
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Option | Type | Default | Описание |
|---|---|---|---|
forceBlock | boolean | false | Принудительно оборачивает вывод в блочный элемент (например, <div>). |
forceInline | boolean | false | Принудительно оборачивает вывод во встроенный элемент (например, <span>). |
tagfilter | boolean | true | Включает фильтр тегов GitHub для повышения безопасности путем удаления опасных тегов HTML. |
preserveFrontmatter | boolean | false | Если true, начальный мета-блок (frontmatter) в строке Markdown не будет удален. |
components | Overrides | {} | Карта HTML-тегов в пользовательские компоненты (например, { h1: MyHeading }). |
wrapper | Component | null | Пользовательский компонент для обертывания отрендеренного Markdown. |
renderMarkdown | Function | null | Пользовательская функция рендеринга для полной замены компилятора Markdown по умолчанию. |
