Organize as rotas de sua api em Node.js de forma elegante
2
0

Organize as rotas de sua api em Node.js de forma elegante

Descubra como a organização do código pode afetar a otimização de um software e torná-lo mais eficiente e de fácil leitura.

Victor Bona
2 min
2
0

Sem organização, não há otimização.

Email image

Não é mistério que durante o desenvolvimento de um software, a organização do código é um dos pontos fundamentais que irão ditar a saúde do desenvolvimento da sua aplicação do início ao fim, códigos mal organizados são difíceis de dar manutenção, difíceis de ler e tem mais chances de serem mal otimizados. Pessoalmente, sempre tento dar uma atenção especial quando se trata de organizar a estrutura de arquivos e de rotas durante o desenvolvimento de uma API(seja na linguagem ou framework que for), recentemente, durante um projeto, um colega de trabalho me apresentou uma forma de organização de rotas no node.js que considerei muito interessante, e é este mesmo script que irei compartilhar com vocês neste artigo.

A solução em Node.js

Vamos ao que interessa. Considerando que seu projeto utiliza o método padrão de importar todas as rotas criadas para cada namespace em um arquivo centralizado e adicionar todas elas ao express, criando um inferno de requires e importações, proponho que você experimente o seguinte snippet. Considerando a seguinte estrutura de arquivos:

const _ = require('lodash');
const fs = require('fs');
const excluded = ['index.route.js'];
function loadAllRoutes(app) {
fs.readdir(__dirname, (err, files) => {
files.forEach((folder) => {
if (!_.includes(excluded, folder)) {
fs.readdirSync(`${__dirname}/${folder}`).forEach((file) => {
if (file.includes('route')) {
app.use(require(`./${folder}/${file}`).routePath, require(`./${folder}/${file}`).router);
}
});
}
});
});
}
module.exports = loadAllRoutes;

Veja que ao usar esta solução, podemos centralizar a chamada de todas as rotas em um único arquivo, adicionando-as ao express rapidamente ao iniciar a aplicação. A parte mais interessante, é que podemos usar essa mesma estrategia para qualquer tipo de chamada em javascript, caso você apenas queira iniciar um conjunto de eventos distribuídos em diversos arquivos *.event.js, basta trocar alguns parâmetros do snippet e pronto, podemos iniciar todos os eventos rapidamente!

Conclusão

Esse é um exemplo muito simples de como pequenos detalhes podem fazer a diferença, se você, assim como eu, preza muito pela qualidade e organização das aplicações que você constrói, recomendo que tente usar soluções parecidas com essa, melhorando a construção e facilidade de compreensão do seu código.