Voltar para lista

13 de 13 visíveis

Arquitetura selecionada

Feature First

Cada feature concentra seus componentes, páginas, serviços, estado e modelos. A intenção é reduzir saltos entre pastas técnicas e deixar claro onde uma funcionalidade vive.

Navegue pelos arquivos para ver como a arquitetura aparece no código.

Feature First

Caminhosrc/app/features/auth/auth.routes.ts

export const authRoutes = [
  {
    path: 'login',
    loadComponent: () => import('./login.page')
      .then((m) => m.LoginPage),
  },
];

Prós

  • Boa navegação para times orientados a produto.
  • Facilita remover, migrar ou refatorar uma feature inteira.
  • Diminui acoplamento entre áreas da aplicação.

Contras

  • Pode gerar duplicação se padrões compartilhados não forem bem definidos.
  • Exige disciplina para não criar dependências cruzadas entre features.

Quando usar

  • Aplicações com muitas jornadas independentes.
  • Times que trabalham por squads ou domínios de produto.
  • Projetos que precisam crescer sem virar uma grande pasta técnica.

Exemplo real

Um e-commerce com features como autenticação, catálogo, carrinho, checkout e pedidos.

Cenário prático

Ao criar a feature de pedidos, o time adiciona páginas, componentes, serviços e estado dentro de `features/orders`, deixando claro que tudo ali pertence à jornada de pedidos.

Como implementar

  • Crie uma pasta por funcionalidade de negócio, como `auth`, `catalog`, `checkout` e `orders`.
  • Mantenha dentro da feature seus componentes, páginas, rotas, serviços e modelos específicos.
  • Use `shared` apenas para elementos realmente reutilizados por várias features e `core` para infraestrutura global.

Cuidado comum

Mover tudo para `shared` cedo demais recria acoplamento global e enfraquece o isolamento das features.