
Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia wersji
- "Zezwalaj na wstępne parsowanie AST Markdown dla SSR / hydratacji"v8.11.028.05.2026
- "Dodano obsługę plików `.content.md`"v8.10.019.05.2026
- "Dodano obiekt wtyczki `intlayerMarkdown`; użyj `app.use(intlayerMarkdown)` zamiast `app.use(installIntlayerMarkdown)`"v8.5.024.03.2026
- "Przeniesiono import z `{{framework}}-intlayer` do `{{framework}}-intlayer/markdown`"v8.5.024.03.2026
- "Dodano narzędzie MarkdownRenderer / useMarkdownRenderer / renderMarkdown i opcję forceInline"v8.0.022.01.2026
- "Automatyczna dekoracja treści markdown, obsługa MDX i SSR"v8.0.018.01.2026
- "Zainicjowano historię"v5.5.1029.06.2025
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimJeśli masz pomysł na ulepszenie tej dokumentacji, zachęcamy do przesłania pull requesta na GitHubie.
Link do dokumentacji na GitHubieKopiuj dokument Markdown do schowka
Markdown / Treść w postaci tekstu sformatowanego
Intlayer obsługuje treści w postaci tekstu sformatowanego (Rich Text) definiowane za pomocą składni Markdown. Pozwala to na łatwe pisanie i utrzymywanie bogato sformatowanych treści, takich jak blogi, artykuły i inne.
Deklarowanie treści Markdown
Możesz zadeklarować treść Markdown używając funkcji md lub po prostu jako ciąg znaków (jeśli zawiera składnię Markdown).
Począwszy od wersji 8.10.0, możesz deklarować treść Markdown bezpośrednio w plikach .content.md. Intlayer automatycznie wykryje i przetworzy treść Markdown.
Skopiuj kod do schowka
Pole front-matter locale to pole, które definiuje język treści. Jest ono opcjonalne. Jeśli nie zostanie podane, Intlayer użyje języka domyślnego, który służy również jako język zastępczy, jeśli nie jest dostępne tłumaczenie dla określonego języka.
Przykład struktury plików:
Skopiuj kod do schowka
Do front-matter można dodać dowolne właściwości zdefiniowane w Definicji słownika
Renderowanie Markdown
Intlayer zapewnia dwa niezależne sposoby renderowania Markdown:
Przez
useIntlayer— Intlayer automatycznie przekształca węzełmdw natywny wynik frameworka (JSX, VNode, ciąg znaków HTML).- Frontmatter jest analizowany i eksponowany jako
.metadata. Możesz nadpisać renderowanie na dwóch poziomach — globalnie za pomocąMarkdownProvider(lub odpowiednika frameworka) i lokalnie dla węzła za pomocą.use(). Oba można łączyć;.use()ma pierwszeństwo przedMarkdownProvider, który z kolei ma pierwszeństwo przed ustawieniami domyślnymi.
- Frontmatter jest analizowany i eksponowany jako
Narzędzia pomocnicze —
<MarkdownRenderer />,useMarkdownRenderer()irenderMarkdown()to samodzielne narzędzia, które akceptują tylko surowe ciągi znaków Markdown. Są one niezależne oduseIntlayeri nie działają ze zwracanymi przez nie udekorowanymi węzłami.
Renderowanie Markdown obsługuje MDX — użyj dowolnego komponentu JSX/frameworka podając jego nazwę bezpośrednio w swoim Markdown.
1. Automatyczne renderowanie (przez useIntlayer)
Węzły Markdown można renderować bezpośrednio jako JSX.
Skopiuj kod do schowka
Jeśli MarkdownProvider nie jest obecny, Intlayer użyje domyślnego parsera Markdown do JSX do wyrenderowania markdownu.
Możesz również zapewnić lokalne nadpisania dla określonych węzłów za pomocą metody .use():
Skopiuj kod do schowka
Możesz pobrać Markdown jako ciąg znaków:
Skopiuj kod do schowka
Możesz uzyskać dostęp do metadanych markdown w ten sposób:
Skopiuj kod do schowka
2. Narzędzia pomocnicze (tylko ciągi znaków Markdown)
Te narzędzia renderują tylko surowe ciągi znaków Markdown i są niezależne od useIntlayer. Używaj ich, gdy musisz wyrenderować Markdown ze źródeł innych niż słowniki.
Komponent <MarkdownRenderer />
Renderuje ciąg znaków Markdown z określonymi opcjami.
Skopiuj kod do schowka
Hook useMarkdownRenderer()
Pobierz wstępnie skonfigurowaną funkcję renderowania.
Skopiuj kod do schowka
Narzędzie renderMarkdown()
Samodzielne narzędzie do renderowania poza komponentami.
Skopiuj kod do schowka
Konfiguracja globalna z MarkdownProvider
MarkdownProvider (lub jego odpowiednik we frameworku) konfiguruje potok renderowania Markdown dla całej aplikacji. Dotyczy to zarówno automatycznego renderowania useIntlayer, jak i narzędzi pomocniczych. Ustawione tutaj opcje są ustawieniami domyślnymi — .use() nadpisuje je na poziomie węzła.
Skopiuj kod do schowka
MDX jest obsługiwany — każda nazwa komponentu użyta wewnątrz twojego Markdown (np.<MyCustomJSXComponent />) jest rozwiązywana względem mapycomponents.
Możesz również użyć własnego renderera markdown:
Skopiuj kod do schowka
Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
Suspense
Renderer Markdown Intlayer jest ładowany dynamicznie. Mimo optymalizacji, bazowy fragment parsera zajmuje około 55 kb. Synchroniczne ładowanie tego opóźnia początkowe renderowanie strony i pogarsza First Contentful Paint (FCP).
Aby zapobiec blokowaniu interfejsu użytkownika, Intlayer integruje się z API Suspense Reacta. Pobiera parser w tle i rzuca Promise podczas pobierania.
Zawiń dowolny komponent renderujący Intlayer Markdown w granicę <Suspense>. Wyświetli to zlokalizowany stan rezerwowy podczas pobierania fragmentu, umożliwiając natychmiastowe renderowanie reszty DOM.
Ostrzeżenie: Jeśli nie zapewnisz granicy <Suspense>, React wstrzyma działanie na poziomie głównym lub zablokuje renderowanie całego drzewa komponentów do czasu pełnego załadowania 55 kb fragmentu.
W Next.js App Router można użyć React Suspense dla komponentów klienckich lub pliku loading.tsx dla komponentów serwerowych.
Komponent kliencki:
Skopiuj kod do schowka
Komponent serwerowy z loading.tsx:
Skopiuj kod do schowka
Skopiuj kod do schowka
Renderowanie po stronie serwera (SSR) i hydratacja
W porównaniu do innych parserów Markdown, takich jak remark / rehype, Intlayer Markdown jest pozbawiony zależności i działa zarówno po stronie klienta, jak i serwera.
Jednak Intlayer optymalizuje parsowanie dla frameworków renderowania po stronie serwera (SSR) (takich jak Next.js App Router, React Router, Nuxt, SvelteKit itp.).
Zamiast wysyłać surowe ciągi Markdown do klienta i parsować je w przeglądarce (co powoduje spadek wydajności), Intlayer pozwala na wstępne sparsowanie Markdown do abstrakcyjnego drzewa składniowego (AST) na serwerze.
Możesz użyć funkcji parseMarkdown z pakietu Intlayer swojego frameworka po stronie serwera, aby wygenerować serializowalne AST (obiekt ParsedMarkdown) i przekazać je bezpośrednio do frontendu. Wszystkie narzędzia renderujące Intlayer (takie jak <MarkdownRenderer>, useMarkdownRenderer itp.) automatycznie akceptują ten obiekt AST i renderują go bez zakłóceń.
Przykład w architekturze serwer/klient
Skopiuj kod do schowka
Skopiuj kod do schowka
Ten wzorzec zapewnia, że logika parsowania Markdown jest wykonywana całkowicie na serwerze, co znacznie skraca czas wykonywania po stronie klienta i poprawia szybkość początkowej hydratacji.
Opcje referencyjne
Te opcje można przekazać do MarkdownProvider, MarkdownRenderer, useMarkdownRenderer i renderMarkdown.
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Option | Type | Default | Opis |
|---|---|---|---|
forceBlock | boolean | false | Wymusza zawijanie wyjścia w element blokowy (np. <div>). |
forceInline | boolean | false | Wymusza zawijanie wyjścia w element liniowy (np. <span>). |
tagfilter | boolean | true | Włącza GitHub Tag Filter w celu zwiększenia bezpieczeństwa poprzez usuwanie niebezpiecznych tagów HTML. |
preserveFrontmatter | boolean | false | Jeśli true, frontmatter na początku ciągu Markdown nie zostanie usunięty. |
components | Overrides | {} | Mapa tagów HTML na niestandardowe komponenty (np. { h1: MyHeading }). |
wrapper | Component | null | Niestandardowy komponent do zawijania renderowanego Markdown. |
renderMarkdown | Function | null | Niestandardowa funkcja renderowania, aby całkowicie zastąpić domyślny kompilator Markdown. |