A estrutura de projeto que eu vou descrever não é um padrão de design específico, mas é uma organização comum que se baseia em princípios do padrão de design MVC (Model-View-Controller) em um contexto de desenvolvimento utilizando NodeJS e MongoDB.
Ou seja, é uma estrutura de projeto que segue os princípios do MVC, mas não é necessariamente chamada de MVC em si.
Essa é uma abordagem para deixar o código mais organizado e limpo, separando as responsabilidades em pastas diferentes. Em resumo, é uma estrutura de projeto que é influenciada pelo padrão MVC, mas não é um framework ou implementação formal.
controllers 🎮
A pasta controllers é responsável por guardar os controladores do aplicativo. Os controladores são responsáveis por manipular requisições HTTP, chamar funções dos modelos e retornar as respostas para o cliente. Normalmente cada arquivo nessa pasta vai representar uma entidade ou recurso do aplicativo e contém funções pra lidar com operações relacionadas a ele.
data 📂
A pasta data é responsável por armazenar dados brutos: arquivos JSON, CSV ou scripts que foram gerados no banco de dados. Pode também conter scripts Node.js que são responsáveis por inicializar o banco de dados com dados iniciais. A pasta data é flexível e seu conteúdo pode variar de projeto para projeto, dependendo das necessidades específicas.
models 🏗️
A pasta models contém os modelos do MongoDB, que definem a estrutura dos documentos no banco de dados. Cada arquivo nessa pasta representa um tipo de documento e define os campos, validações e métodos.
public 🌐
A pasta public é usada para armazenar arquivos estáticos, como arquivos CSS, Javascript, imagens e arquivos de mídia. É interessante criar subdiretórios para categorizar os diferentes tipos de recursos, como o CSS para estilização e JS para scripts.
routes 🚦
É onde as definições de rota e controladores associados são mantidas. Gerenciam as solicitações HTTP. Cada rota pode responder a diferentes métodos HTTP, como GET, POST, PUT, DELETE, etc. Geralmente, cada arquivo nessa pasta corresponde a um grupo de rotas relacionadas a um recurso específico.
util 🛠️
Essa pasta pode conter utilitários ou módulos de uso geral que não se encaixam bem em outras categorias. Geralmente possui funções de utilidade, validações e configurações comuns.
views 👁️
A pasta views é onde os arquivos de modelo são armazenados e usados para renderizar a interface do usuário. Esses arquivos geralmente contém código HTML. Geralmente se utiliza um mecanismo de template como EJS, Handlebars, Pug e etc.
Organizando o projeto dessa maneira deixa cada pasta com um papel específico, o que torna a manutenção e colaboração mais eficiente, pois as responsabilidades estão bem definidas. A estrutura exata de um projeto vai variar de acordo com as necessidades do aplicativo e a preferência do time. Entretanto, a organização em camadas e a separação de responsabilidades são princípios importantes a serem seguidos.
Top comments (0)
Some comments have been hidden by the post's author - find out more