
Faça sua pergunta e obtenha um resumo do documento referenciando esta página e o provedor AI de sua escolha
Histórico de versões
- "Permitir a pré-análise do AST do Markdown para SSR / hidratação"v8.11.028/05/2026
- "Adicionado suporte a arquivos `.content.md`"v8.10.019/05/2026
- "Adicionado o objeto plugin `intlayerMarkdown`; use `app.use(intlayerMarkdown)` em vez de `app.use(installIntlayerMarkdown)`"v8.5.024/03/2026
- "Movida a importação de `{{framework}}-intlayer` para `{{framework}}-intlayer/markdown`"v8.5.024/03/2026
- "Adicionada a utilidade MarkdownRenderer / useMarkdownRenderer / renderMarkdown e a opção forceInline"v8.0.022/01/2026
- "Decoração automática de conteúdo markdown, suporte a MDX e SSR"v8.0.018/01/2026
- "Histórico inicializado"v5.5.1029/06/2025
O conteúdo desta página foi traduzido com uma IA.
Veja a última versão do conteúdo original em inglêsSe você tiver uma ideia para melhorar esta documentação, sinta-se à vontade para contribuir enviando uma pull request no GitHub.
Link do GitHub para a documentaçãoCopiar o Markdown do documento para a área de transferência
Markdown / Conteúdo de Texto Rico
O Intlayer suporta conteúdo de texto rico definido usando a sintaxe Markdown. Isso permite que você escreva e mantenha facilmente conteúdos com formatação rica, como blogs, artigos e muito mais.
Declarando Conteúdo Markdown
Você pode declarar conteúdo Markdown usando a função md ou simplesmente como uma string (se ela contiver sintaxe Markdown).
A partir da versão 8.10.0, você pode declarar conteúdo Markdown diretamente em arquivos .content.md. O Intlayer detectará e processará automaticamente o conteúdo Markdown.
Copiar o código para a área de transferência
O campo locale no front-matter é o campo que define a localização do conteúdo. É opcional. Se não for fornecido, o Intlayer usará o idioma padrão, que também é usado como idioma de fallback caso não haja tradução disponível para um idioma específico.
Exemplo de estrutura de diretórios:
Copiar o código para a área de transferência
Você pode adicionar no front-matter quaisquer propriedades definidas na Definição de Dicionário
Renderizando Markdown
O Intlayer fornece duas maneiras independentes de renderizar Markdown:
Através do
useIntlayer— O Intlayer transforma automaticamente o nómdna saída nativa do framework (JSX, VNode, string HTML).- O Frontmatter é analisado e exposto como
.metadata. Você pode substituir a renderização em dois níveis — globalmente comMarkdownProvider(ou o equivalente do framework) e localmente por nó com.use(). Ambos podem ser combinados;.use()tem prioridade sobreMarkdownProvider, que por sua vez tem prioridade sobre o padrão.
- O Frontmatter é analisado e exposto como
Utilitários auxiliares —
<MarkdownRenderer />,useMarkdownRenderer()erenderMarkdown()são ferramentas autônomas que aceitam apenas strings Markdown brutas. Elas são independentes douseIntlayere não funcionam com os nós decorados que ele retorna.
A renderização do Markdown suporta MDX — use qualquer componente JSX/framework por nome diretamente no seu Markdown.
1. Renderização Automática (através de useIntlayer)
Nós Markdown podem ser renderizados diretamente como JSX.
Copiar o código para a área de transferência
Se o MarkdownProvider não estiver presente, o Intlayer renderizará o markdown usando o parser padrão Markdown-para-JSX.
Você também pode fornecer substituições locais para nós específicos usando o método .use():
Copiar o código para a área de transferência
Você pode recuperar o Markdown como string:
Copiar o código para a área de transferência
E você pode acessar os metadados do markdown assim:
Copiar o código para a área de transferência
2. Utilitários auxiliares (Somente Strings Markdown)
Estes utilitários renderizam apenas strings Markdown brutas e são independentes do useIntlayer. Use-os quando precisar renderizar Markdown de fontes além de seus dicionários.
Componente <MarkdownRenderer />
Renderiza uma string Markdown com opções específicas.
Copiar o código para a área de transferência
Hook useMarkdownRenderer()
Obtém uma função de renderização pré-configurada.
Copiar o código para a área de transferência
Utilitário renderMarkdown()
Utilitário autônomo para renderização fora dos componentes.
Copiar o código para a área de transferência
Configuração Global com MarkdownProvider
O MarkdownProvider (ou o seu equivalente do framework) configura o pipeline de renderização Markdown para toda a sua aplicação. Aplica-se tanto para a renderização automática do useIntlayer quanto para os utilitários auxiliares. Opções definidas aqui são os padrões — o .use() substitui-os em nível de nó.
Copiar o código para a área de transferência
O MDX é suportado — qualquer nome de componente usado dentro do seu Markdown (ex:<MyCustomJSXComponent />) é resolvido com base no mapa decomponents.
Você também pode usar seu próprio renderizador de markdown:
Copiar o código para a área de transferência
Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do bundle da sua aplicação.
Suspense
O renderizador Markdown do Intlayer é carregado dinamicamente. Embora otimizado, o chunk do analisador subjacente tem aproximadamente 55 kb. Carregar isso de forma síncrona atrasa a renderização inicial da página e degrada o First Contentful Paint (FCP).
Para evitar o bloqueio da interface do usuário, o Intlayer se integra com a API Suspense do React. Ele busca o analisador em segundo plano e lança uma Promise durante o download.
Envolva qualquer componente que renderize o Intlayer Markdown em um limite <Suspense>. Isso exibe um estado de fallback localizado enquanto o chunk é baixado, permitindo que o restante de seu DOM seja renderizado imediatamente.
Aviso: Se você não fornecer um limite <Suspense>, o React irá suspender no nível raiz ou bloquear a renderização de toda a árvore de componentes até que o chunk de 55 kb seja totalmente carregado.
No Next.js App Router, você pode usar o React Suspense para componentes do cliente ou um arquivo loading.tsx para componentes do servidor.
Componente do Cliente:
Copiar o código para a área de transferência
Componente do Servidor com loading.tsx:
Copiar o código para a área de transferência
Copiar o código para a área de transferência
Renderização no Lado do Servidor (SSR) e Hidratação
Em comparação com outros analisadores de Markdown, como remark / rehype, o Intlayer Markdown é livre de dependências e roda tanto no cliente quanto no servidor.
No entanto, o Intlayer otimiza a análise para frameworks de Renderização no Lado do Servidor (SSR) (como Next.js App Router, React Router, Nuxt, SvelteKit, etc.).
Em vez de enviar strings Markdown brutas para o cliente e analisá-las no navegador (o que acarreta uma perda de desempenho), o Intlayer permite pré-analisar o Markdown em uma Árvore de Sintaxe Abstrata (AST) no servidor.
Você pode usar a função parseMarkdown do pacote Intlayer do seu framework no lado do servidor para gerar uma AST serializável (objeto ParsedMarkdown) e passá-la diretamente para o frontend. Todos os utilitários de renderização do Intlayer (como <MarkdownRenderer>, useMarkdownRenderer, etc.) aceitam automaticamente esse objeto AST e o renderizam perfeitamente.
Exemplo em uma Arquitetura Servidor/Cliente
Copiar o código para a área de transferência
Copiar o código para a área de transferência
Esse padrão garante que a lógica de análise do Markdown seja executada inteiramente no servidor, reduzindo significativamente o tempo de execução no cliente e melhorando a velocidade de hidratação inicial.
Referência de opções
Essas opções podem ser passadas para MarkdownProvider, MarkdownRenderer, useMarkdownRenderer e renderMarkdown.
Abrir a tabela em um modal para ver todo o conteúdo claramente
| Option | Type | Default | Descrição |
|---|---|---|---|
forceBlock | boolean | false | Força a saída a ser envolvida em um elemento de nível de bloco (ex: <div>). |
forceInline | boolean | false | Força a saída a ser envolvida em um elemento em linha (ex: <span>). |
tagfilter | boolean | true | Habilita o GitHub Tag Filter para melhor segurança removendo tags HTML perigosas. |
preserveFrontmatter | boolean | false | Se true, o frontmatter no início da string Markdown não será removido. |
components | Overrides | {} | Um mapa de tags HTML para componentes personalizados (ex: { h1: MyHeading }). |
wrapper | Component | null | Um componente personalizado para envolver o Markdown renderizado. |
renderMarkdown | Function | null | Uma função de renderização personalizada para substituir completamente o compilador Markdown padrão. |