Executando verificação de segurança...
8

Estrutura de Pastas Aplicações SPA (Angular, React, Vue ...)

Ao iniciar um novo projeto de Single Page Application (SPA), uma das decisões mais cruciais é a organização das pastas do projeto. Uma estrutura bem definida pode simplificar o desenvolvimento, a manutenção e a colaboração com outros membros da equipe.

Neste artigo, explorarei uma estrutura de pastas para iniciar uma aplicação, visando torná-la flexível e escalável ao longo do desenvolvimento.

É importante notar que essa abordagem é especialmente útil para frameworks que não oferecem uma estrutura de pastas altamente opinativa por padrão.

Arquitetura dos diretórios

A seguir, apresento uma visualização da arquitetura de diretórios que recomendo para a organização de projetos de SPA:

/src
│
├── /core
│   ├── (**Funcionalidades essenciais para inicializar a aplicação**)
│
├── /components 
│   ├── (**Componentes de apresentação**)
│
├── /widgets
│   ├── (**Componentes independentes**)
│
├── /services
│   ├── (**Serviços para comunicar com a API**)
│
├── /domain
│   ├── (**Tipos e utilitários específicos da aplicação**)
│
└── /routes
    ├── (**Páginas da aplicação**)

Essa estrutura proporciona uma separação clara de responsabilidades, facilitando o desenvolvimento, manutenção e escalabilidade do projeto.

Na continuação deste artigo, explicarei a responsabilidade de cada pasta.

/core

Esta pasta é utilizada para armazenar o código necessário para inicializar o seu aplicativo e carregar funcionalidades essenciais. Aqui residem os serviços essenciais, componentes e outras funcionalidades que são utilizadas em várias partes da aplicação.

/components

Aqui ficam os componentes reutilizáveis da sua aplicação focados na apresentação dos dados ao usuário.

/widgets

Os componentes nesta pasta são projetados para serem incorporados nas páginas de forma independente. Eles utilizam serviços para buscar os dados necessários e fazem uso de marcação e outros componentes para exibi-los.

O ideal é que esses componentes sejam customizáveis apenas em aspectos básicos de estilização, como cores, fontes e tamanhos. Eles não devem receber dados diretamente, pois devem ser capazes de buscar por conta própria.

/services

Nesta pasta, você deve colocar os serviços responsáveis por se comunicar com a API do seu backend. Esses serviços podem incluir lógica de autenticação, chamadas HTTP e manipulação de dados.

/domain

Esta pasta abriga tipos e utilitários específicos da aplicação. Aqui você encontrará definições de tipos de dados, funções, classes e lógica de negócios que são específicas para o domínio da aplicação.

/routes

Os componentes nesta pasta combinam outros componentes para criar páginas completas que são exibidas quando o usuário acessa determinadas URLs.

Dica Adicional:

Além da estrutura de pastas, uma prática complementar valiosa é ter um ou varios(em cada diretório) arquivos README.md contendo informações sobre o propósito de cada pasta, orientações de uso, e quaisquer outras informações relevantes para os desenvolvedores que interagem com o código no futuro.

Conclusão

Lembre-se de que não há uma abordagem única que funcione para todos os projetos. A estrutura apresentada neste artigo é apenas uma sugestão e pode ser adaptada conforme as necessidades específicas do seu projeto.

Experimente esta estrutura em seu próximo projeto e ajuste conforme necessário para atender às suas necessidades.

Espero que este artigo tenha sido útil para ajudá-lo a começar com o pé direito em seus projetos SPA!

2

Muito bom! isso vai ajudar bastante gente que está iniciando com Angular e entre outros. Uma estrutura bem organizada sempre nos salva de dores de cabeça no futuro.

1

Verdade, já trabalhei em projetos em que faltou esse cuidado e era um desperdício de tempo ter que procurar algo em meio a pastas com hierarquia muito profunda e principalmente sem objetivo bem documentado

2

Bem útil, sem falar que se você estiver trabalhando em uma fábrica de software seria bem interessante alternar entre projetos em que mesmo que usem frameworks diferentes no Frontend mantenham a mesma estrutura