Guia de Sintaxe do Diagrama de Blocos do Mermaid.js e Layout em Grade

Um Diagrama de Blocos é um motor de layout estruturado usado para representar arquiteturas de software complexas, plataformas de hardware ou modelos organizacionais. Introduzido nativamente no Mermaid.js, o blocomotor trata a área de layout como uma matriz matemática absoluta em grade. Isso fornece controle preciso sobre alinhamentos de colunas, limites de aninhamento de layout isolados, blocos de espaçamento estrutural e configurações explícitas de ligação de portas de borda.

Compreendendo a Estratégia da Matriz de Grade

Diferentemente dos fluxogramas padrão em forma livre que adivinham dinamicamente os rastros de layout, um diagrama de bloco é construído sobre um sistema rígido de grade linear de coordenadas:

  • O Limite de Coluna:Você define um teto horizontal rígido usando o colunasmodificador. Quando a grade se enche com blocos, os elementos adicionais são automaticamente quebrados para a próxima linha de forma limpa.
  • Dimensionamento por Campos da Grade:Por padrão, cada bloco ocupa uma única posição de coordenada ($1 times 1$). Você pode alterar esse comportamento atribuindo larguras de coluna explícitas para que os elementos se estendam perfeitamente por múltiplos rastros.

Estrutura Básica da Sintaxe

Todo layout começa com o blococabeçalho de declaração. É seguido pela definição da capacidade de largura de linha com a palavra-chave colunase declarando blocos em linhas sequenciais.

bloco
  colunas 3
  componentA["Primeiro Bloco"]
  componentB["Bloco do Meio"]
  componentC["Bloco da Direita"]

Referência de Sintaxe

A tabela abaixo detalha os parâmetros de dados fundamentais, palavras-chave de estilização personalizada e contêineres estruturais reconhecidos nativamente pelo interpretador de blocos.

Componente de Sintaxe Requisito de Tipo Descrição e Regras de Layout Visual
Declaração Identificador de Palavra-Chave Inicializa a área de canvas de grade de blocos matriciais. Deve usar exatamente o bloco stringa de cabeçalho.
Conjunto de Colunas Palavra-chave + Inteiro Define o número total de slots horizontais antes de quebrar as linhas (por exemplo, colunas 4).
Bloco Padrão ID + Rótulo Opcional Cria uma caixa de dados padrão: id["Texto do Rótulo"]. Decoradores de forma correspondem à sintaxe de fluxograma (por exemplo, (()) para círculos, [()] para bancos de dados).
Substituição de Dimensão do Bloco Bloco de Parâmetro Dois-Pontos Substitui a área padrão da grade de escala de layout $1 times 1$ atribuindo explicitamente blocos personalizados de largura de coluna: id:largura.
Elemento de Espaçamento Palavra-chave Reservada Insere um elemento invisível e estrutural de espaçamento $1 times 1$ na linha ativa usando exatamente a palavra-chave espaço palavra-chave. Você pode multiplicar os espaçamentos de largura inline como espaço:2.
Seta do Bloco ID de Entidade Especializada Renderiza uma caixa de seta transitória grossa e estruturada dentro de uma célula da grade: arrowId<["Rótulo"]>(direção). As direções incluem cima, baixo, esquerda, direita.
Envoltório Composto Bloco / Container Final Aninha uma matriz de sub-grade isolada e independente diretamente dentro de uma célula de bloco pai: bloco:SubID ... fim. Os sub-blocos podem declarar seus próprios limites de coluna independentes.

Recursos Avançados: Dimensões de Bloco Explícitas e Modificadores de Espaço

Para layouts assimétricos, você pode passar métricas explícitas de tamanho horizontal diretamente para blocos padrão ou divisores de espaço usando um separador de notação de dois pontos (:largura). Isso força os elementos a se estenderem sobre múltiplas posições da grade de forma limpa.

bloco
  colunas 4
  wideComponent["Cabeçalho do Painel Ampliado"]:4
  leftBar["Barra Lateral"] espaço:2 rightBar["Painel Principal"]


Recursos Avançados: Tipos de Arestas, Direções e Opções de Ligação

Conexões dentro do blocomotor são divididas em linhas semânticas padrão e setas estruturais de bloco de layout. As linhas de conexão padrão suportam a especificação de restrições direcionais explícitas para determinar como as linhas envolvem os elementos.

1. Conectores de Linha Padrão

As conexões de bloco usam os operadores de ligação padrão (-->, --, <-->). No entanto, você pode controlar o roteamento acrescentando direções ou modificadores dentro de parênteses:

  • A --> B : Desenha uma linha direcional padrão do elemento A ao elemento B.
  • A -- x B : Desenha um caminho de conexão terminado por uma marca “X”, indicando um caminho bloqueado.
  • A -- o B : Desenha um caminho de conexão terminado com um ponto de conexão em círculo aberto.

2. Setas de Bloco de Layout Dinâmico

As setas de bloco são tratadas como componentes de layout reais que ocupam um bloco de índice de coordenadas real na sua matriz de orçamento de linhas. Elas usam propriedades de sintaxe maior que e menor que para mapear caminhos físicos de fluxo:

bloco
  colunas 3
  produtor["Produtor de Dados"]
  setaMeio<["Transformar Tráfego"]>(direita)
  consumidor["Consumidor de Dados"]


Recursos Avançados: Aninhamento de Matriz de Sub-Bloco (Agrupamento Composto)

O bloco:idenvoltório funciona como um ambiente de contexto de caixa de layout isolado. Um contêiner de grupo de aplicativo pode estabelecer sua própria contagem única de colunas horizontais dentro de um sub-bloco, permitindo que componentes complexos se agrupem firmemente sem influenciar o espaçamento da grade da matriz de modelo de canvas pai global.

bloco
  colunas 2
  gatewayRaiz["Gateway Global"]
  
  bloco:clusterMicroservicos
    colunas 3
    auth["Nó de Autenticação"]
    api["API Principal"]
    worker["Motor de Trabalho"]
  fim


Plano Real: Infraestrutura de Várias Camadas com Cache

Este plano abrangente, de múltiplas linhas, demonstra uma configuração limpa de infraestrutura de nível de produção. Estabelece um layout de grade de processamento com 3 colunas, usa elementos estruturais espaço elementos para isolar uma camada de banco de dados, mapeia uma descida grossa setaBloco, e isola um contêiner interno separado de sub-sistema usando um aninhado bloco:id ... fim envoltório composto.

bloco
  colunas 3

  %% Linha 1: Serviços de Entrada
  dnsClient(("Cliente Web"))
  loadBalancer["Balanceador de Carga de Borda"]
  espaço

  %% Linha 2: Fluxo de Conexão descendo até Microserviços
  espaço
  downRoute<["Encaminhar Tráfego"]>(para baixo)
  espaço

  %% Linha 3: Cluster do Ambiente de Aplicação Composta
  bloco:appCluster
    colunas 2
    authService["Autenticação"]
    apiEngine["Trabalhador da API Principal"]
  fim
  espaço
  database[("Banco de Dados PostgreSQL")]

  %% Estabelecer alinhamentos estruturais claros entre matrizes
  loadBalancer --> appCluster
  appCluster --> database


Armadilhas Comuns de Sintaxe e Restrições do Sistema

Ao compilar mapas precisos de matriz de grade, tenha em mente estas verificações de validação para evitar falhas na análise:

  • Aplicação do Orçamento de Colunas: Mantenha um controle cuidadoso do número de colunas. Se você especificar colunas 3 e escrever 4 blocos sequenciais em uma linha, o quarto bloco cairá automaticamente para a linha 2, o que pode interromper os caminhos de conexão esquerda para direita planejados.
  • Ordem de Aninhamento Composto: Ao construir contêineres internos com bloco:id, você deve sempre selar o espaço de trabalho da sub-grade usando a fim palavra-chave em uma linha isolada antes de declarar elementos subsequentes. Falhar em fechar o bloco interromperá a construção do diagrama.
  • Limitações do Alvo da Setas de Bloco: A propriedade de direção contida entre parênteses após uma seta de bloco (por exemplo, (para cima), (para baixo)) deve ser um literal em minúsculas que corresponda perfeitamente às palavras-chave do sistema. Capitalizar a direção causará erros de processamento.
  • Colisões de Limites de Rótulo: Decoradores de forma de fluxograma padrão (como parênteses () para caixas redondas ou chaves {} para diamantes) são totalmente suportados. Certifique-se de que todas as etiquetas de texto exibidas dentro das formas usem aspas duplas limpas para evitar a remoção de caracteres.
Scroll to Top