Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "Дозволити попередній синтаксичний аналіз 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
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюЯкщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.
Посилання на документацію на GitHubСкопіювати документацію у форматі Markdown в буфер обміну
Markdown / Вміст форматованого тексту
Intlayer підтримує вміст форматованого тексту, визначений за допомогою синтаксису Markdown. Це дозволяє легко створювати та підтримувати форматований вміст, такий як блоги, статті тощо.
Оголошення вмісту Markdown
Ви можете оголосити вміст Markdown за допомогою функції md або просто як рядок (якщо він містить синтаксис Markdown).
Починаючи з версії 8.10.0, ви можете оголошувати вміст Markdown безпосередньо у файлах .content.md. Intlayer автоматично виявлятиме та аналізуватиме вміст Markdown.
Скопіюйте код у буфер обміну
Поле front-matter locale визначає локаль вмісту. Воно є необов'язковим. Якщо його не вказано, Intlayer використовуватиме локаль за замовчуванням, яка також слугуватиме резервною, якщо переклад для конкретної локалі недоступний.
Приклад структури файлів:
Скопіюйте код у буфер обміну
У front-matter ви можете додати будь-які властивості, визначені у Визначенні словника
Використовуйте функцію md для явного оголошення вмісту Markdown. Це корисно, якщо ви хочете переконатися, що рядок обробляється як Markdown, навіть якщо він не містить очевидного синтаксису.
Скопіюйте код у буфер обміну
Імпортуйте файли .md безпосередньо за допомогою функції file.
Скопіюйте код у буфер обміну
Якщо рядок містить типові індикатори Markdown (наприклад, заголовки, списки, посилання тощо), Intlayer автоматично перетворить його.
Скопіюйте код у буфер обміну
Рендеринг Markdown
Intlayer надає два незалежні способи рендерингу Markdown:
Через
useIntlayer— Intlayer автоматично перетворює вузолmdу нативний вихідний формат фреймворку (JSX, VNode, HTML-рядок).- Frontmatter аналізується та надається як
.metadata. Ви можете перевизначити рендеринг на двох рівнях — глобально за допомогоюMarkdownProvider(або еквівалента фреймворку) та локально для кожного вузла за допомогою.use(). Обидва підходи можна комбінувати;.use()має пріоритет надMarkdownProvider, який має пріоритет над поведінкою за замовчуванням.
- Frontmatter аналізується та надається як
Допоміжні утиліти —
<MarkdownRenderer />,useMarkdownRenderer()таrenderMarkdown()є самостійними інструментами, які приймають тільки необроблені рядки Markdown. Вони не залежать від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 з певними опціями.
Скопіюйте код у буфер обміну
Хук useMarkdownRenderer()
Отримайте попередньо налаштовану функцію рендерингу.
Скопіюйте код у буфер обміну
Утиліта renderMarkdown()
Окрема утиліта для рендерингу поза компонентами.
Скопіюйте код у буфер обміну
Компонент <MarkdownRenderer />
Рендерить рядок Markdown з певними опціями.
Скопіюйте код у буфер обміну
Хук useMarkdownRenderer()
Отримайте попередньо налаштовану функцію рендерингу.
Скопіюйте код у буфер обміну
Утиліта renderMarkdown()
Окрема утиліта для рендерингу поза компонентами.
Скопіюйте код у буфер обміну
Компонент <MarkdownRenderer />
Скопіюйте код у буфер обміну
Компонент <MarkdownRenderer />
Скопіюйте код у буфер обміну
Хук useMarkdownRenderer()
Скопіюйте код у буфер обміну
Утиліта renderMarkdown()
Скопіюйте код у буфер обміну
Компонент <MarkdownRenderer />
Скопіюйте код у буфер обміну
Хук useMarkdownRenderer()
Скопіюйте код у буфер обміну
Утиліта renderMarkdown()
Скопіюйте код у буфер обміну
Компонент <MarkdownRenderer />
Скопіюйте код у буфер обміну
Хук useMarkdownRenderer()
Скопіюйте код у буфер обміну
Утиліта renderMarkdown()
Скопіюйте код у буфер обміну
Сервіс IntlayerMarkdownService
Рендерить рядок Markdown за допомогою сервісу.
Скопіюйте код у буфер обміну
Глобальне налаштування за допомогою MarkdownProvider
MarkdownProvider (або його еквівалент у фреймворку) налаштовує конвеєр рендерингу Markdown для всього вашого додатку. Це стосується як автоматичного рендерингу useIntlayer, так і допоміжних утиліт. Налаштування, вказані тут, є значеннями за замовчуванням — .use() перевизначає їх на рівні вузла.
Скопіюйте код у буфер обміну
Підтримується MDX — будь-яка назва компонента, яка використовується всередині вашого Markdown (наприклад,<MyCustomJSXComponent />), розпізнається відповідно до картиcomponents.
Ви також можете використовувати власний рендерер markdown:
Скопіюйте код у буфер обміну
Динамічний імпорт вашого рендерера Markdown — чудовий спосіб зменшити розмір бандлу вашого додатка.
Скопіюйте код у буфер обміну
Підтримується MDX — будь-яка назва компонента, яка використовується всередині вашого Markdown (наприклад,<MyCustomJSXComponent />), розпізнається відповідно до картиcomponents.
Ви також можете використовувати власний рендерер markdown:
Скопіюйте код у буфер обміну
Динамічний імпорт вашого рендерера Markdown — чудовий спосіб зменшити розмір бандлу вашого додатка.
Скопіюйте код у буфер обміну
Підтримується MDX — будь-яка назва компонента, яка використовується всередині вашого Markdown (наприклад,<MyCustomJSXComponent />), розпізнається відповідно до картиcomponents.
Ви також можете використовувати власний рендерер markdown:
Скопіюйте код у буфер обміну
Динамічний імпорт вашого рендерера Markdown — чудовий спосіб зменшити розмір бандлу вашого додатка.
Скопіюйте код у буфер обміну
Підтримується MDX — будь-яка назва компонента, яка використовується всередині вашого Markdown (наприклад,<MyCustomJSXComponent />), розпізнається відповідно до картиcomponents.
Ви також можете використовувати власний рендерер markdown:
Скопіюйте код у буфер обміну
Динамічний імпорт вашого рендерера Markdown — чудовий спосіб зменшити розмір бандлу вашого додатка.
Скопіюйте код у буфер обміну
Підтримується MDX — будь-яка назва компонента, яка використовується всередині вашого Markdown (наприклад,<MyCustomJSXComponent />), розпізнається відповідно до картиcomponents.
Ви також можете використовувати власний рендерер markdown:
Скопіюйте код у буфер обміну
Динамічний імпорт вашого рендерера Markdown — чудовий спосіб зменшити розмір бандлу вашого додатка.
Скопіюйте код у буфер обміну
Підтримується MDX — будь-яка назва компонента, яка використовується всередині вашого Markdown (наприклад,<MyCustomJSXComponent />), розпізнається відповідно до картиcomponents.
Ви також можете використовувати власний рендерер markdown:
Скопіюйте код у буфер обміну
Динамічний імпорт вашого рендерера Markdown — чудовий спосіб зменшити розмір бандлу вашого додатка.
Скопіюйте код у буфер обміну
Підтримується MDX — будь-яка назва компонента, яка використовується всередині вашого Markdown (наприклад,<MyCustomJSXComponent />), розпізнається відповідно до картиcomponents.
Ви також можете використовувати власний рендерер markdown:
Скопіюйте код у буфер обміну
Динамічний імпорт вашого рендерера Markdown — чудовий спосіб зменшити розмір бандлу вашого додатка.
Suspense
Рендерер Markdown Intlayer завантажується динамічно. Хоча він оптимізований, базовий фрагмент аналізатора становить близько 55 кБ. Синхронне завантаження цього затримує початковий рендеринг сторінки та погіршує First Contentful Paint (FCP).
Щоб запобігти блокуванню інтерфейсу користувача, Intlayer інтегрується з API Suspense від React. Він завантажує аналізатор у фоновому режимі та створює 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) в Angular для обробки вмісту 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 за замовчуванням. |
