Aula 14 - Arquitetura e Boas Práticas 🏗️
Criando Apps Escaláveis e Mantíveis
Agenda de Hoje 📅
- Por que arquitetura importa?
- Organização de Pastas Profissional
- Componentes Burros vs Inteligentes
- Svelte Actions (
use:action) - Clean Code aplicado ao Svelte
- Prática: Refatoração de Código
1. O Caos do "Código Macarrão" 🍝
- À medida que o app cresce, tudo fica bagunçado.
- Difícil de encontrar arquivos.
- Difícil de testar.
- Solução: Arquitetura de Componentes.
2. Organização Sugerida 📂
src/lib/components/: Componentes genéricos (Botão, Input).src/lib/features/: Lógicas específicas (Login, Carrinho).src/lib/services/: Chamadas de API (fetch).src/lib/stores/: Estado Global.src/lib/utils/: Funções auxiliares (datas, moedas).
3. Tipos de Componentes 🧬
3.1 Componentes Inteligentes (Smart)
- Gerenciam estado.
- Fazem chamadas de API.
- Conectados às Stores.
3.2 Componentes Burros (Dumb)
- Apenas recebem dados via props.
- Apenas emitem eventos para o pai.
- Extremamente fáceis de testar e reutilizar.
4. Svelte Actions: use:action 🛠️
- Permitem manipular o elemento DOM diretamente.
- Perfeito para bibliotecas externas (ex: máscaras de input).
export function clickOutside(node) {
const handleClick = (e) => {
if (!node.contains(e.target)) {
node.dispatchEvent(new CustomEvent('outclick'));
}
};
document.addEventListener('click', handleClick);
return {
destroy() { document.removeEventListener('click', handleClick); }
};
}
5. Clean Code no Svelte ✨
- Nomes de Componentes: PascalCase (ex:
MenuPrincipal.svelte). - Small is Beautiful: Se um componente tem mais de 200 linhas, talvez deva ser dividido.
- Desestruturação: Use
{...props}com cautela.
6. Camadas da Aplicação 🥞
graph TD
UI[Interface / Componentes] --> Logic[Lógica / Actions / Stores]
Logic --> Data[Dados / Services / API]
Data --> Remote[Servidor Externo] 7. Performance: Menos é Mais 🚀
- Evite re-renderizações desnecessárias.
- Use
immutable: trueno compilador se for necessário. - Prefira CSS nativo a frameworks pesados sempre que possível.
8. Prática: Refatorando o Dashboard 🛠️
- Pegue um componente que faz "tudo" (API + Lista + Estilo).
- Extraia a chamada de API para a pasta
services/. - Extraia cada item da lista para um componente
Card.svelte.
9. Resumo da Aula ✅
- Separe UI de Lógica.
- Use Actions para manipular o DOM.
- Organização de pastas poupa tempo e dinheiro.
Próxima Aula: Build e Produção 🚀
- Otimização com Vite.
- Variáveis de ambiente (.env).
- Hospedagem (Vercel/GitHub Pages).
Dúvidas? 🤔
"A arquitetura é a arte de planejar hoje o que será mantido amanhã."