Este post foi elaborado a partir de dúvidas e pedidos de leitores. Tentarei de forma clara e prática, transmitir a importância e “forma” de uso de cada um dos itens citados no título deste.
Para simplificar o aprendizado iremos construir uma pequena “API”, de modo a exemplificar o uso dos itens citados acima.
Sugestão de leitura
Os posts abaixo representam tão somente sugestões/recomendações de leitura, não devem ser tidos como pré-requisitos para a leitura ou execução das práticas contidas aqui neste post.
NVM – Gerencie múltiplas instalações do Node.js: https://medium.com/%40fabiojanio/nvm-gerencie-m%C3%BAltiplas-instala%C3%A7%C3%B5es-do-node-js-6fcd0f13aaf7
Node.js + Express + ES6 + ESLint + Prettier + Sucrase de forma simples e rápida: https://medium.com/%40fabiojanio/node-js-express-es6-eslint-sucrase-de-forma-simples-e-r%C3%A1pida-8467fcfae728
EditorConfig – Padronizando características essenciais: https://medium.com/@fabiojanio/editorconfig-padronizando-caracter%C3%ADsticas-essenciais-768a806ad33c
Dica: eu recomendaria o uso do ESLint + Prettier em todos os seus projetos, afinal de contas é uma boa prática manter aspectos de consistência em todo o projeto.
Pré-requisitos
- Node.js
- NPM ou Yarn
- VSCode*
Ao longo deste post irei utilizar o Yarn como gerenciador de dependências, fique livre para utilizar o NPM se assim preferir. Já como editor de código, utilizarei o VSCode, porém, você é livre para utilizar o sabor de editor que preferir.
Os pacotes
Aqui farei uma beve apresentação conceitual de cada um dos pacotes/módulos que serão utilizados ao longo deste post.
Express
Segundo a descrição oficial, o Express é um Framework web rápido, sem opinião e minimalista. Mas o que isso significa?
Grosseiramente falando: o express não dita estrutura de diretórios e nem tão pouco como as coisas tem que funcionar. Ele trás recursos básicos como criação de rotas, middlewares, validadores e por ai vai, porém, te dando a liberdade de utilizar na estrutura que quiser e como quiser. Acho que até hoje considero o Express uma lib muito boa, e não como um framework.
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.
DotEnv
É um módulo de dependência zero, responsável por carregar variáveis de ambiente de um arquivo .env
em process.env.*
.
Cors
O cross-origin é uma especificação que define meios para que um recurso do servidor seja acessado remotamente via web.
O pacote Cors citado neste post é responsável por fornecer ao Express um middleware que permite lidar com requisições externas. Em resumo, sem este componente nossa aplicação, na forma como será concebida, não poderia ser acessada de um endereço diferente de onde o servidor será iniciado.
Consign
O consign facilita o desenvolvimento de aplicativos com separação lógica de arquivos e carregamento automático de scripts. Pode ser usado para carregar automaticamente modelos, rotas, esquemas, configurações, controladores, mapas de objetos, etc.
Em resumo ele pode ser visto como um autoloader com recursos agregados de injeção de dependências.
BodyParser
Faz a analise e parse dos dados de entrada contidos no corpo da requisição, disponibilizando as propriedades em req.body
, as quais podem ser facilmente acessadas em notação de objeto.
Este middleware já está integrado ao Express desde sua versão 4.16.0, ou seja, não é necessário ser instalado separadamente caso você já esteja utilizando Express.
Compression
Um middleware de compressão. Em resumo, nos permite trabalhar com compressão gzip nas requisições.
Essa abordagem irá acelerar o carregamento das páginas, uma vez que os dados serão transmitidos de forma comprimida entre o cliente e o servidor.
Este middleware faz a compressão automática quando identifica que o servidor irá enviar para o usuário uma response com tamanho maior ou igual a 1kb. Também permite configurar regras para ignorar compressões em casos específicos.
Mãos a obra
Vamos instalar as nossas dependências de produção:
Continue lendo em: https://medium.com/@fabiojanio/nodejs-express-cors-consign-autoload-bodyparser-e-compression-na-prática-fbfc12e46ff4