Sumário
O Express ganhou espaço rapidamente com o desenvolvimento de aplicações e APIs usando NodeJS. Uma grande parte dessa adoção se deve a facilidade de criar uma aplicação e iniciar o uso dela.
Porém com a facilidade e liberdade de desenvolvimento vem um alto custo de organização. Se o projeto não for planejado desde o início, conforme forem feitas modificações, adições e exclusões de pacotes e rotas, o projeto ficará muito difícil de ser usado.
Por isso é de extrema importância ter uma estrutura fixa para desenvolvimento, que irá cobrir tudo necessário para o projeto se manter organizado no longo prazo.
Dito isso, vou apresentar para vocês qual a estrutura de pastas que eu prefiro e o motivo, além de mostrar outros padrões que desenvolvedores e engenheiros ao redor do mundo optam por usar!
root/ 📁
|-- src/ 📁
|-- clients/ 📁
|-- controllers/ 📁
|-- models/ 📁
|-- routes/ 📁
|-- utils/ 📁
|-- functions/ 📁
|-- validations/ 📁
|-- server.js
|-- .env
|-- README.md
|-- .gitignore
|-- package.json
|-- package-lock.json
Bom, agora vamos entender pasta a pasta!
<aside> 🗂️ A pasta root é a pasta inicial do projeto, normalmente possui o nome do repositório ou algo mais descritivo sobre o projeto… no exemplo acima tem o nome de “modelo-pastas-express! Dentro eu deixo os arquivos que costumam ter correlação com a execução da aplicação. Algo que possa ser chamado por alguma linha de comando ou ferramenta externa. Dito isso, colocar esses arquivos em um diretório mais acessível facilita a usabilidade.
Como exemplo o package.json, que ao rodar um “npm install” é consumido para verificar quais as dependências estão sendo utilizadas no projeto!
Temos também o .env, que é executado junto da aplicação no arquivo server.js, é responsável por guardar nossas variáveis de ambiente e dados sensíveis!
O arquivo .gitignore também é bem comum ver nessa camada, já que ele é uma forma de controlar o que vai para o GitHub ou não!
Uma última coisa a mencionar, é a pasta src! É nessa pasta que vai ficar todas as outras pastas. Vamos dar uma olhada nela!
</aside>