अपने प्रश्न को पूछें और दस्तावेज़ का सारांश प्राप्त करें, इस पृष्ठ और आपके चुने हुए AI प्रदाता का उपयोग करके
संस्करण इतिहास
- "SSR / हाइड्रेशन के लिए मार्कडाउन एएसटी के पूर्व-पार्सिंग की अनुमति दें"v8.11.028/5/2026
- "`.content.md` फ़ाइलों के लिए समर्थन जोड़ा गया"v8.10.019/5/2026
- "`intlayerMarkdown` प्लगइन ऑब्जेक्ट जोड़ा गया; `app.use(installIntlayerMarkdown)` के बजाय `app.use(intlayerMarkdown)` का उपयोग करें"v8.5.024/3/2026
- "आयात को `{{framework}}-intlayer` से `{{framework}}-intlayer/markdown` में ले जाया गया"v8.5.024/3/2026
- "MarkdownRenderer / useMarkdownRenderer / renderMarkdown उपयोगिता और forceInline विकल्प जोड़ा गया"v8.0.022/1/2026
- "मार्कडाउन सामग्री, MDX और SSR समर्थन की स्वचालित सजावट"v8.0.018/1/2026
- "प्रारंभिक इतिहास"v5.5.1029/6/2025
इस पृष्ठ की सामग्री एक AI द्वारा अनुवादित की गई है।
अंग्रेजी में मूल सामग्री के अंतिम संस्करण देखेंIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Markdown / रिच टेक्स्ट सामग्री
Intlayer Markdown सिंटैक्स का उपयोग करके परिभाषित रिच टेक्स्ट सामग्री का समर्थन करता है। यह आपको ब्लॉग, लेख आदि जैसी समृद्ध-स्वरूपित सामग्री को आसानी से लिखने और बनाए रखने की अनुमति देता है।
Markdown सामग्री घोषित करना
आप md फ़ंक्शन का उपयोग करके या केवल एक स्ट्रिंग के रूप में (यदि इसमें Markdown सिंटैक्स है) Markdown सामग्री घोषित कर सकते हैं।
संस्करण 8.10.0 से, आप सीधे .content.md फ़ाइलों में Markdown सामग्री घोषित कर सकते हैं। Intlayer स्वचालित रूप से Markdown सामग्री का पता लगाएगा और उसे पार्स करेगा।
कोड को क्लिपबोर्ड पर कॉपी करें
---key: my-markdown-contentdescription: मेरी सामग्रीlocale: en---# मेरी सामग्रीयहाँ एक मार्कडाउन सामग्री उदाहरण हैlocale फ्रंट-मैटर फ़ील्ड वह फ़ील्ड है जो सामग्री स्थानीय (locale) को परिभाषित करता है। यह वैकल्पिक है। यदि प्रदान नहीं किया जाता है, तो Intlayer डिफ़ॉल्ट स्थानीय का उपयोग करेगा, जिसे विशिष्ट स्थानीय के लिए कोई अनुवाद उपलब्ध नहीं होने पर फ़ॉलबैक स्थानीय के रूप में भी उपयोग किया जाता है।
फ़ाइल संरचना उदाहरण:
कोड को क्लिपबोर्ड पर कॉपी करें
content├── markdown-file.en.content.md├── markdown-file.fr.content.md└── markdown-file.es.content.mdआप फ्रंट-मैटर में डिक्शनरी परिभाषा में परिभाषित कोई भी गुण जोड़ सकते हैं
Markdown रेंडरिंग
Intlayer Markdown रेंडर करने के दो स्वतंत्र तरीके प्रदान करता है:
useIntlayerके माध्यम से — Intlayer स्वचालित रूप सेmdनोड को फ्रेमवर्क के मूल आउटपुट (JSX, VNode, HTML स्ट्रिंग) में बदल देता है।- फ्रंटमैटर को पार्स किया जाता है और
.metadataके रूप में उजागर किया जाता है। आप रेंडरिंग को दो स्तरों पर ओवरराइड कर सकते हैं — विश्व स्तर परMarkdownProvider(या फ्रेमवर्क समतुल्य) के साथ और स्थानीय स्तर पर प्रति नोड.use()के साथ। दोनों को जोड़ा जा सकता है;.use(),MarkdownProviderपर पूर्वता लेता है, जो डिफ़ॉल्ट पर पूर्वता लेता है।
- फ्रंटमैटर को पार्स किया जाता है और
हेल्पर यूटिलिटीज —
<MarkdownRenderer />,useMarkdownRenderer(), औरrenderMarkdown()स्टैंडअलोन टूल हैं जो केवल कच्चे Markdown स्ट्रिंग्स को स्वीकार करते हैं। वेuseIntlayerसे स्वतंत्र हैं और इसके द्वारा लौटाए गए सजाए गए नोड्स के साथ काम नहीं करते हैं।
Markdown रेंडरिंग MDX का समर्थन करता है — अपने Markdown के अंदर सीधे नाम से किसी भी JSX/फ्रेमवर्क घटक का उपयोग करें।
1. स्वचालित रेंडरिंग (useIntlayer के माध्यम से)
Markdown नोड्स को सीधे JSX के रूप में रेंडर किया जा सकता है।
कोड को क्लिपबोर्ड पर कॉपी करें
import { useIntlayer } from "react-intlayer";import { MarkdownProvider } from "react-intlayer/markdown";const AppContent = () => { const { myMarkdownContent } = useIntlayer("app"); return <div>{myMarkdownContent}</div>;};const App = () => ( <MarkdownProvider components={{ h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>, MyButton: (props) => <button {...props} />, // MDX घटक }} > <AppContent /> </MarkdownProvider>);यदि MarkdownProvider मौजूद नहीं है, तो Intlayer डिफ़ॉल्ट Markdown से JSX पार्सर का उपयोग करके मार्कडाउन को रेंडर करेगा।
आप .use() विधि का उपयोग करके विशिष्ट नोड्स के लिए स्थानीय ओवरराइड भी प्रदान कर सकते हैं:
कोड को क्लिपबोर्ड पर कॉपी करें
{myMarkdownContent.use({ h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,})}आप Markdown को एक स्ट्रिंग के रूप में प्राप्त कर सकते हैं:
कोड को क्लिपबोर्ड पर कॉपी करें
{myMarkdownContent.value}{String(myMarkdownContent)}{myMarkdownContent.toString()}और आप अपने मार्कडाउन मेटाडेटा तक इस प्रकार पहुँच सकते हैं:
कोड को क्लिपबोर्ड पर कॉपी करें
{myMarkdownContent.metadata}{myMarkdownContent.metadata.title}2. हेल्पर यूटिलिटीज (केवल Markdown स्ट्रिंग्स)
ये यूटिलिटीज केवल कच्चे Markdown स्ट्रिंग्स को रेंडर करती हैं और useIntlayer से स्वतंत्र हैं। जब आपको अपने डिक्शनरी के अलावा अन्य स्रोतों से Markdown रेंडर करने की आवश्यकता हो, तो इनका उपयोग करें।
<MarkdownRenderer /> घटक
विशिष्ट विकल्पों के साथ एक Markdown स्ट्रिंग रेंडर करता है।
कोड को क्लिपबोर्ड पर कॉपी करें
import { MarkdownRenderer } from "react-intlayer/markdown";<MarkdownRenderer forceBlock={true} tagfilter={true}> {"# मेरा शीर्षक"}</MarkdownRenderer>useMarkdownRenderer() हुक
पूर्व-कॉन्फ़िगर रेंडरर फ़ंक्शन प्राप्त करें।
कोड को क्लिपबोर्ड पर कॉपी करें
import { useMarkdownRenderer } from "react-intlayer/markdown";const renderMarkdown = useMarkdownRenderer({ forceBlock: true, components: { h1: (props) => <h1 {...props} className="custom" /> }});return renderMarkdown("# मेरा शीर्षक");renderMarkdown() उपयोगिता
घटकों के बाहर रेंडरिंग के लिए स्टैंडअलोन उपयोगिता।
कोड को क्लिपबोर्ड पर कॉपी करें
import { renderMarkdown } from "react-intlayer/markdown";const jsx = renderMarkdown("# मेरा शीर्षक", { forceBlock: true });MarkdownProvider के साथ ग्लोबल कॉन्फ़िगरेशन
MarkdownProvider (या इसके फ्रेमवर्क समतुल्य) आपके संपूर्ण एप्लिकेशन के लिए Markdown रेंडरिंग पाइपलाइन को कॉन्फ़िगर करता है। यह स्वचालित useIntlayer रेंडरिंग और हेल्पर यूटिलिटीज दोनों पर लागू होता है। यहाँ सेट किए गए विकल्प डिफ़ॉल्ट हैं — .use() उन्हें नोड स्तर पर ओवरराइड करता है।
कोड को क्लिपबोर्ड पर कॉपी करें
import { MarkdownProvider } from "react-intlayer/markdown";export const AppProvider = ({ children }) => ( <MarkdownProvider components={{ h1: (props) => <h1 style={{color: 'green'}} {...props} />, a: ({ href, ...props }) => <a style={{color: 'red'}} {...props} />, MyCustomJSXComponent: (props) => <span style={{color: 'red'}} {...props} />, }} > {children} </MarkdownProvider>);MDX समर्थित है — आपके Markdown के अंदर उपयोग किए गए किसी भी घटक नाम (उदा.<MyCustomJSXComponent />) कोcomponentsमानचित्र के विरुद्ध हल किया जाता है।
आप अपने स्वयं के मार्कडाउन रेंडरर का भी उपयोग कर सकते हैं:
कोड को क्लिपबोर्ड पर कॉपी करें
import { MarkdownProvider } from "react-intlayer/markdown";export const AppProvider = ({ children }) => ( <MarkdownProvider renderMarkdown={async (md) => { // Use dynamic import to reduce the bundle size of your application const { renderMarkdown } = await import('react-intlayer/markdown'); return renderMarkdown(md); }} > {children} </MarkdownProvider>);अपने Markdown रेंडरर को गतिशील रूप से आयात करना आपके एप्लिकेशन के बंडल आकार को कम करने का एक शानदार तरीका है।
सस्पेंस (Suspense)
Intlayer Markdown रेंडरर गतिशील रूप से लोड किया गया है। अनुकूलित होने के बावजूद, अंतर्निहित पार्सर चंक लगभग 55kb है। इसे सिंक्रोनस रूप से लोड करने से प्रारंभिक पृष्ठ रेंडरिंग में देरी होती है और First Contentful Paint (FCP) कम हो जाता है।
UI को ब्लॉक होने से रोकने के लिए, Intlayer React के Suspense API के साथ एकीकृत होता है। यह पार्सर को पृष्ठभूमि में लाता है और डाउनलोड के दौरान एक Promise थ्रो करता है।
Intlayer Markdown रेंडर करने वाले किसी भी घटक को <Suspense> बाउंड्री में लपेटें। यह चंक डाउनलोड होने के दौरान एक स्थानीयकृत फ़ॉलबैक स्थिति प्रदर्शित करता है, जिससे आपके शेष DOM को तुरंत रेंडर करने की अनुमति मिलती है।
चेतावनी: यदि आप <Suspense> बाउंड्री प्रदान नहीं करते हैं, तो 55kb चंक पूरी तरह से लोड होने तक React रूट स्तर पर निलंबित हो जाएगा या पूरे घटक ट्री को रेंडर होने से रोक देगा।
Next.js ऐप राउटर में, आप क्लाइंट घटकों के लिए React Suspense या सर्वर घटकों के लिए loading.tsx फ़ाइल का उपयोग कर सकते हैं।
क्लाइंट घटक:
कोड को क्लिपबोर्ड पर कॉपी करें
"use client";import { useIntlayer } from "next-intlayer";import { Suspense } from "react";const MyComponent = () => {const markdownContent = useIntlayer("my-markdown");return ( <Suspense fallback={<div>Loading...</div>}>{markdownContent}</Suspense>);};loading.tsx के साथ सर्वर घटक:
कोड को क्लिपबोर्ड पर कॉपी करें
export default function Loading() {return <div>Loading...</div>;}कोड को क्लिपबोर्ड पर कॉपी करें
import { useIntlayer } from "next-intlayer/server";const MyPage = () => {const markdownContent = useIntlayer("my-markdown");return <div>{markdownContent}</div>;};export default MyPage;सर्वर-साइड रेंडरिंग (SSR) और हाइड्रेशन
अन्य मार्कडाउन पार्सर जैसे remark / rehype की तुलना में, Intlayer Markdown पूरी तरह से निर्भरता-मुक्त है और क्लाइंट तथा सर्वर दोनों साइड पर चलता है।
लेकिन Intlayer ने सर्वर-साइड रेंडरिंग (SSR) फ्रेमवर्क (जैसे Next.js App Router, React Router, Nuxt, SvelteKit, आदि) के लिए पार्सिंग को अनुकूलित किया है।
क्लाइंट को रॉ मार्कडाउन स्ट्रिंग्स भेजने और ब्राउज़र पर उन्हें पार्स करने के बजाय (जिससे प्रदर्शन प्रभावित होता है), Intlayer आपको सर्वर पर ही मार्कडाउन को एब्सट्रैक्ट सिंटैक्स ट्री (AST) में प्री-पार्स करने की अनुमति देता है।
आप सर्वर साइड पर अपने फ्रेमवर्क के Intlayer पैकेज से parseMarkdown फ़ंक्शन का उपयोग करके एक सीरियलाइज़ेबल AST (ParsedMarkdown ऑब्जेक्ट) बना सकते हैं, और इसे सीधे फ़्रंटएंड पर पास कर सकते हैं। सभी Intlayer रेंडरिंग उपयोगिताएँ (जैसे <MarkdownRenderer>, useMarkdownRenderer, आदि) स्वचालित रूप से इस AST ऑब्जेक्ट को स्वीकार करती हैं और इसे बिना किसी बाधा के रेंडर करती हैं।
सर्वर/क्लाइंट आर्किटेक्चर में उदाहरण
कोड को क्लिपबोर्ड पर कॉपी करें
import { parseMarkdown } from "react-intlayer/markdown";// 1. सर्वर पर: मार्कडाउन को एक सीरियलाइज़ेबल AST में पार्स करेंexport const loader = async () => { const markdownString = "## My title \n\nLorem Ipsum"; const ast = parseMarkdown(markdownString); // AST को JSON के रूप में क्लाइंट को वापस करें return Response.json({ content: ast });};कोड को क्लिपबोर्ड पर कॉपी करें
import { useLoaderData } from "react-router";import { MarkdownRenderer } from "react-intlayer/markdown";// 2. क्लाइंट पर: बिना री-पार्स किए सीधे AST रेंडर करेंexport default function Page() { const { content } = useLoaderData(); // रेंडरर रॉ स्ट्रिंग या पार्स किए गए AST दोनों को स्वीकार करता है return <MarkdownRenderer content={content} />;}यह पैटर्न यह सुनिश्चित करता है कि मार्कडाउन पार्सिंग लॉजिक पूरी तरह से सर्वर पर निष्पादित हो, जिससे क्लाइंट-साइड निष्पादन समय काफी कम हो जाता है और प्रारंभिक हाइड्रेशन गति में सुधार होता है।
विकल्प संदर्भ
इन विकल्पों को MarkdownProvider, MarkdownRenderer, useMarkdownRenderer और renderMarkdown में पास किया जा सकता है।
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| Option | Type | Default | विवरण |
|---|---|---|---|
forceBlock | boolean | false | आउटपुट को ब्लॉक-स्तरीय तत्व (उदा., <div>) में लपेटने के लिए बाध्य करता है। |
forceInline | boolean | false | आउटपुट को इनलाइन तत्व (उदा., <span>) में लपेटने के लिए बाध्य करता है। |
tagfilter | boolean | true | खतरनाक HTML टैग को हटाकर सुरक्षा में सुधार के लिए GitHub टैग फ़िल्टर को सक्षम करता है। |
preserveFrontmatter | boolean | false | यदि true है, तो Markdown स्ट्रिंग के प्रारंभ में फ्रंटमैटर को नहीं हटाया जाएगा। |
components | Overrides | {} | कस्टम घटकों के लिए HTML टैग का मानचित्र (उदा., { h1: MyHeading })। |
wrapper | Component | null | रेंडर किए गए Markdown को लपेटने के लिए एक कस्टम घटक। |
renderMarkdown | Function | null | डिफ़ॉल्ट Markdown कंपाइलर को पूरी तरह से बदलने के लिए एक कस्टम रेंडरिंग फ़ंक्शन। |