-
Notifications
You must be signed in to change notification settings - Fork 1
Performance
Edgar Mesquita edited this page Jan 26, 2026
·
5 revisions
O foco do eQuantic.UI é entregar uma experiência de Single Page Application (SPA) com o mínimo de sobrecarga possível, aproveitando o poder do C# para gerar código frontend altamente otimizado.
O sistema de Virtual DOM foi desenhado para ser eficiente e prever mudanças de estado.
Atualmente, o algoritmo de reconciliação opera com uma estratégia baseada em índice.
- O reconciliador compara nós novos com antigos sequencialmente.
-
Key Property: A propriedade
Keyé utilizada para verificar identidade. Se a chave de um elemento mudar, o framework assume que é um elemento completamente novo e o recria, garantindo que estado incorreto não vaze entre elementos distintos. - Nota: A reordenação inteligente baseada em chaves (mover elementos no DOM em vez de substituir) é um alvo de otimização futura. Por enquanto, a identidade garante integridade, não necessariamente a movimentação mínima do DOM em listas reordenadas.
Vazamentos de memória são mitigados através do uso inteligente de referências fracas e limpeza automática.
Os listeners de eventos são rastreados utilizando WeakMap<HTMLElement, Map<string, EventHandler>>.
-
Referências Fracas: O
WeakMappermite que elementos DOM sejam coletados pelo Garbage Collector quando removidos da árvore, mesmo que o framework ainda tenha referências internas aos seus handlers. -
Cleanup Automático: Ao remover um componente, o reconciliador tenta desligar listeners explicitamente, mas o
WeakMapatua como uma rede de segurança para evitar vazamentos em ciclos de vida complexos.
O SDK utiliza o Bun embarcado para processar o output final.
- Performance de Build: O Bun processa arquivos TS/JS até 10x mais rápido que ferramentas baseadas em Node.js.
- Tree-shaking: Código morto é removido automaticamente durante o build.
- Minificação: Scripts são entregues comprimidos.
- Chunks por Página: Cada página gera seu próprio bundle JS. O usuário baixa apenas o necessário para a rota atual.
- Lazy Loading: Componentes complexos e bibliotecas podem ser carregados sob demanda.