A magia por trás do desenvolvimento de softwares não está em fazer tudo do zero, está principalmente na reusabilidade! É um erro queremos desenvolver todos os componentes de uma aplicação partindo do mais absoluto zero, além de gastarmos muito tempo e talvez dinheiro, certamente não conseguiremos atingir de imediato o nível de qualidade e maturidade de soluções já aclamadas pela comunidade.

Por exemplo, se minha aplicação necessita de um sistema de rotas, certamente não irei criar a lógica deste sistema, afinal de contas não é o foco do meu desenvolvimento dado o contexto apresentado! Não faz nenhum sentido desperdiçar tempo tentando construir essa lógica do zero, existem inúmeras soluções open source que sofreram anos de evolução e maturação, ou seja, meu foco não é criar o sistema de rotas, é criar uma solução XPTO, logo não faz sentido dedicar 100% do meu tempo a reinventar a roda. Entende?

O que é o Express?

O Express.js ou simplesmente Express, segundo o site oficial, é um Framework web rápido, sem opinião e minimalista!

Grosseiramente falando, o Express não prescreve estrutura de diretórios ou arquivos, não engessa configurações e nem tão pouco dita de que forma devemos construir nossa aplicação, ou seja, ele não tem opinião.

Em termos gerais a implementação do Express é bem enxuta, carregando somente o que é essencial a praticamente qualquer aplicação, como implementação de rotas, middlewares e mais alguns poucos recursos, ou seja, ele se concentra em fazer direito o que é considerado básico, resultando desta forma em uma solução minimalista e consequentemente rápida (performática).

Por baixo do capô o Express implementa e estende funcionalidades de inúmeras bibliotecas nativas do Node.js, tais como http, path e net. Além das bibliotecas nativas, podemos citar algumas de terceiros, como é o caso do body-parser. Essa abordagem se faz necessário para que funcionalidades já existente sejam estendidas (melhoradas) e novas funcionalidades sejam criadas (implementadas).

<aside> 🔗 Site oficial: https://expressjs.com

</aside>

Por que Express?

Utilizamos frameworks e demais bibliotecas para abstrair a complexidade de determinadas implementações e ganhar agilidade no processo de desenvolvimento, dito isso, devemos ter em mente que não existe uma bala de prata que irá atender a todos os cenários, ocasiões e circunstâncias.

O Express é um dos sabores disponíveis entre tantas opções. Porém, pesa sobre este o ponto positivo de ser uma solução rápida, minimalista e sem opinião, ou seja, ele provavelmente se encaixaria em uma variedade muito maior de projetos do que qualquer outra alternativa de framework.

Para simplificar a compreensão vamos imaginar dois cenários fictícios:

  1. Você precisa construir um site com 5 páginas e uma área de login;
  2. Você precisa construir uma API com 5 rotas e um middleware de validação.

Ignore o contexto totalmente abstrato dos cenários acima, se apegue ao fato de que em ambos os casos precisamos lidar com navegação (rotas) e manipulação de dados. Você acha que neste contexto tão simples seria vantajoso utilizar um framework completo, que possui centenas de funcionalidades que nunca serão utilizadas? Claro que não, seria o mesmo que utilizar um canhão para matar uma formiga, você estaria no mínimo desperdiçando recursos uma vez que soluções de grande porte tendem a ser mais complexa e consumir mais hardware.

É no cenário acima que o Express entra, ele tem capacidade para lidar com soluções extremamente simples e pequena até implementações maiores e complexas.

Sabe o ditado que diz — pau para toda obra? — pois bem, o Express é esse cara, mas não tome isso como verdade absoluta, cada projeto é única e igualmente possui características únicas, logo não existe uma bala de prata para tudo, ainda que o Express na minha humilde opinião seja a melhor opção para casos onde não sabemos que framework utilizar, ou se devemos de fato utilizar algum.

<aside> 💡 Ainda que eu tenha chamado está solução de framework, na minha humilde opinião o Express está mais para uma biblioteca muito útil do que pra um framework!

</aside>

Exemplo básico

Deste ponto em diante começaremos a utilizar inúmeras bibliotecas nativas e de terceiros, iremos codificar páginas web estáticas, utilizar banco de dados relacional e NoSQL, criar APIs, utilizar JWT e muito mais. Vem comigo!