Express.js é o framework backend mais popular para o Node.js, e faz parte do ecossistema JavaScript.
Projetado para criar aplicativos da web de página única, várias páginas e híbridos, ele também se tornou o padrão para desenvolver aplicativos de backend usando Node.js e é a parte de backend do que é conhecido como pilha MEVN.
O MEVN é uma pilha de software JavaScript gratuito e de código aberto para construir sites dinâmicos e aplicativos web, com os seguintes componentes:
- MongoDB: MongoDB é o banco de dados padrão NoSQL
- Express.js: A framework padrão de aplicativos web para construir aplicativos web
- Vue.js: A framework progressivo JavaScript usado para construir aplicativos web de frontend
- Node.js: Mecanismo JavaScript usado para aplicativos escaláveis do lado do servidor e de rede
Neste guia, vamos descobrir as principais funcionalidades da framework Express.js e como criar o primeiro aplicativo.
O que é o Express.js?
O Express.js, às vezes também referido como “Express”, é um framework backend minimalista, rápido e parecido com o Sinatra Node.js que fornece funcionalidades robustas e ferramentas para desenvolver aplicativos de backend escaláveis. Ele fornece o sistema de roteamento e recursos simplificados para estender o framework, desenvolvendo componentes e partes mais poderosas, dependendo dos casos de uso do seu aplicativo.
A framework fornece um conjunto de ferramentas para aplicativos web, solicitações e respostas HTTP, roteamento e middleware para construção e implantação de aplicativos em larga escala e prontas para a empresa.
Ele também fornece uma ferramenta de interface de linha de comando (CLI) chamada Node Package Manager (NPM), onde os desenvolvedores podem fazer o código-fonte para os pacotes desenvolvidos. Ele também força os desenvolvedores a seguirem o princípio Don’t Repeat Yourself (DRY).
O princípio DRY visa reduzir a repetição de padrões de software, através da sua substituição por abstrações ou da normalização dos dados para evitar redundância.
Para que o Express.js é usado?
O Express.js é usado para uma grande variedade de coisas no ecossistema JavaScript/Node.js – você pode desenvolver aplicativos, endpoints API, sistemas de roteamento e frameworks com ele.
Abaixo está uma lista de apenas alguns dos tipos de aplicativos que você pode construir com o Express.js.
Aplicativos de página única
Aplicativos de página única (SPA) representam a moderna abordagem ao desenvolvimento de aplicativos na qual o aplicativo inteiro é abordado em uma única página de índice. Express.js é uma excelente framework para criar uma API para se conectar a esses aplicativos SPA e servir os dados de forma consistente. Alguns exemplos de aplicativos de página única são Gmail, Google Maps, Airbnb, Netflix, Pinterest, Paypal e muitos outros. As empresas usam SPAs para criar uma experiência suave e escalável.
Ferramentas de colaboração em tempo real
Ferramentas de colaboração estão aqui para facilitar a forma como as empresas trabalham e colaboram diariamente, e com o Express.js, você pode desenvolver aplicativos de colaboração e de rede em tempo real com facilidade.
Além disso, o framework é usado para desenvolver aplicativos em tempo real, como aplicativos de chat e painel de controle, onde se torna simples integrar o WebSocket ao framework.
Express.js lida com a parte de roteamento e middleware do processo, permitindo que os desenvolvedores se concentrem na lógica comercial vital desses recursos em tempo real ao desenvolver ferramentas colaborativas em tempo real.
Aplicativos de streaming
Aplicativos de streaming em tempo real como o Netflix são complexas com muitas camadas de fluxos de dados. Para desenvolver tal aplicativo, você precisa de uma framework sólida para lidar com fluxos de dados assíncronos de forma eficiente.
É uma framework ideal para construir e implantar aplicativos de streaming prontas para a empresa e escaláveis.
Aplicativos fintech
O termo fintech refere-se a um programa de computador e outras tecnologias usadas para apoiar ou habilitar serviços bancários e financeiros. A criação de aplicativos fintech é atualmente a tendência da indústria e o Express.js é a framework preferida para criar aplicativos fintech altamente escaláveis.
Se você está pensando em construir um aplicativo fintech com alto volume de usuários e transações, então você estará se juntando a empresas como Paypal e Capital One no desenvolvimento e implantação do seu aplicativo usando o Express.js.
Porque você deve usar Express.js
Há várias razões pelas quais você deve considerar o uso do Express.js para seu próximo projeto, desde uma E/S mais rápida para solicitações e respostas mais rápidas até seu sistema de uma única linha e processos assíncronos. Ele também usa a framework MVC para simplificar as manipulações de dados e sistemas de roteamento. Vamos dar uma olhada mais detalhada em algumas das principais razões que você deve considerar para usar o Express.js.
Flexível e rápido
O Express.js é muito fácil de usar e flexível, e é mais rápido do que qualquer outro framework Node.js. Um framework minimalista, ele oferece desenvolvimento rápido de aplicativos e alivia o estresse de dominar as muitas partes diferentes de um framework maior. Ele também fornece recursos ricos, como um excelente sistema de roteamento, middlewares e negociação de conteúdo desde o início.
Parte do MEAN Stack
Express.js é a framework de escolha em cada pilha representada com o E em qualquer pilha, como MERN, MEAN, e assim por diante. Ele também pode ser facilmente integrado em qualquer pilha ou tecnologia para mostrar como a framework é vital no processo de desenvolvimento da pilha MEAN.
Além disso, ele pode se conectar eficientemente com um sistema de gerenciamento do banco de dados mais robusto do que o MySQL convencional e fornece um processo de desenvolvimento contínuo através de cada pilha. Esta combinação de funcionalidades torna o Express.js muito popular entre os desenvolvedores MEAN.
Escalabilidade
Express.js provou ser muito escalável ao longo dos anos devido ao número de grandes empresas que utilizam a framework em seus servidores diariamente.
Ele lida com as solicitações e respostas dos usuários de forma eficiente e requer pouca ou nenhuma configuração extra ao desenvolver um aplicativo web de larga escala.
Possui excelentes módulos, pacotes e recursos adicionais, ajudando os desenvolvedores a criar aplicativos web confiáveis e escaláveis.
Suportado pelo Google V8 Engine
Express.js suporta muitos pacotes do Google V8 Engine, tornando o framework muito poderoso para construir e implantar aplicativos em tempo real, colaborativas e baseadas em rede a nível empresarial.
O Google V8 Engine é um poderoso mecanismo JavaScript e WebAssembly de código aberto que suporta velocidade e escalabilidade para aplicativos complexos e intensivos. O uso de um pacote que usa o mecanismo Google V8 melhorará muito o desempenho e a escalabilidade do seu aplicativo de backend.
Suporte da comunidade
Como a framework backend mais popular do Node.js, ela tem o maior suporte e muitos recursos e pacotes disponibilizados pela comunidade para qualquer problema de desenvolvimento. O suporte do Google também é considerável, tornando a framework popular entre os desenvolvedores do Node.js. Sendo de código aberto, oferece aos desenvolvedores a oportunidade de criar pacotes extensíveis e recursos para facilitar o desenvolvimento, não apenas para eles mesmos, mas também para todos os outros usuários do Express.js.
Poderoso sistema de roteamento
O framework possui o sistema de roteamento mais poderoso e robusto construído fora da caixa que ajuda seu aplicativo responder a uma solicitação de cliente via um endpoint específico.
Com o sistema de roteamento do Express.js, você pode dividir seu sistema de roteamento volumoso em arquivos gerenciáveis usando a instância de roteador do framework.
O sistema de roteamento do Express.js é útil na gestão da framework do seu aplicativo, agrupando diferentes rotas em uma única pasta/diretório.
Os desenvolvedores criam um código mais fácil de manter agrupando funções no roteador Express.js e evitando a repetição.
Middleware
Express.js é uma framework que compreende uma série de middleware para criar um processo de desenvolvimento contínuo.
Middlewares são códigos que executam antes de uma solicitação HTTP chegar ao manipulador de rotas, ou antes, de um cliente receber uma resposta, dando à framework a capacidade de executar um script típico antes ou depois de uma solicitação do cliente.
Com o middleware, os desenvolvedores podem conectar scripts para interceptar o fluxo do aplicativo, por exemplo, os desenvolvedores podem usar o middleware para verificar se um usuário está logado ou desconectado com sucesso.
Como o Express.js funciona
O Express.js usa um modelo cliente-servidor para aceitar solicitações do usuário e enviar respostas ao cliente, portanto, seu comportamento não é muito diferente de outros frameworks populares como o Laravel.
Quando um usuário envia uma solicitação do seu navegador da internet digitando um endereço de site, o navegador envia uma solicitação HTTP para o aplicativo/servidor (muitos aplicativos criados que usam o Express.js são hospedadas em algum lugar na nuvem).
O servidor receberá a solicitação através de uma de suas rotas e a processará usando o controlador que corresponda à rota solicitada.
Após o processamento, o servidor enviará uma resposta de volta ao cliente usando HTTP, uma vez que é um protocolo de comunicação “back-and-forth”.
A resposta retornada ao cliente pode ser um texto padrão, uma página HTML dinâmica que o navegador irá processar e exibir uma bela página de internet, ou dados JSON que os desenvolvedores do frontend irão lidar para exibir informações na página da internet.
Vamos criar um servidor simples para ouvir os pedidos recebidos de uma URL específica e número de porta com o Express.js:
const express = require('express')
const app = express()
const port = 4000
app.get('/', (request, response) => {
response.send('Testing Hello World!')
})
app.listen(port, () => {
console.log(`Test app listening at http://localhost:${port}`)
})
Esse é um servidor Express.js simples que ouvirá as solicitações recebidas em http://localhost:4000/ e retornará uma resposta de texto de “Testing Hello World!“.
Como criar um aplicativo Express.js
Agora, vamos criar um aplicativo demo do mundo real usando o novo Express.js 5.0. Para começar, crie um diretório para o seu novo aplicativo e instale os seguintes pacotes:
mkdir first-express-app
cd first-express-app
npm install [email protected] --save
Em seguida, crie um arquivo index.js no diretório raiz e cole nele o seguinte:
touch index.js
Após configurar o servidor como demonstrado acima, criaremos um array Todos que contém todos os nossos todos a serem devolvidos ao usuário, dependendo do endpoint chamado. Adicione o seguinte código ao arquivo index.js
:
const express = require("express");
const app = express();
const port = 3000;
app.listen(port, () => {
console.log(`Test app listening at http://localhost:${port}`)
})
const todos = [
{
title: "Todo 1",
desc: "This is my first Todo",
completed: true,
},
{
title: "Todo 2",
desc: "This is my second Todo",
completed: true,
},
{
title: "Todo 3",
desc: "This is my third Todo",
completed: true,
},
{
title: "Todo 4",
desc: "This is my fourth Todo",
completed: true,
},
{
title: "Todo 5",
desc: "This is my fifth Todo",
completed: true,
},
];
// Data source ends here
A seguir, criaremos um endpoint para recuperar todo o Todos
armazenado em nosso servidor:
app.get("/todos", (request, response) => {
response.status(200).json(todos);
});
Em seguida, um endpoint para recuperar um único Todo baseado na ID do Todo:
app.get("/todos/:id", (request, response) => {
response
.status(200)
.json({ data: todos.find((todo) => todo.id === request.params.id) });
});
Agora, um endpoint para armazenar um novo todo
:
app.post("/todos", (request, response) => {
todos.push(request.body);
response.status(201).json({ msg: "Todo created successfully" });
});
A seguir, um endpoint para atualizar um todo
existente com o ID
:
app.put("/todos/:id", (request, response) => {
const todo = todos.find((todo) => todo.id === request.params.id);
if (todo) {
const { title, desc, completed } = request.body;
todo.title = title;
todo.desc = desc;
todo.completed = completed;
response.status(200).json({ msg: "Todo updated successfully" });
return;
}
response.status(404).json({ msg: "Todo not found" });
});
Finalmente, criaremos um endpoint para excluir um único todo
baseado no ID
:
app.delete("/todos/:id", (request, response) => {
const todoIndex = todos.findIndex((todo) => (todo.id = request.params.id));
if (todoIndex) {
todos.splice(todoIndex, 1);
response.status(200).json({ msg: "Todo deleted successfully" });
}
response.status(404).json({ msg: "Todo not found" });
});
Este trecho de código mostra como implementar uma funcionalidade DELETE no Express.js. Ele coleta o ID Todo através de parâmetros e procura no array pelo ID correspondente e o apaga.
Testando o aplicativo Express.js
Teste seu novo aplicativo Express.js. Execute o seguinte comando para testar sua API REST recém-desenvolvida com o Postman e certifique-se de que ela tenha os dados corretos.
node index.js
Você pode baixar o Postman no site oficial e executar o teste abaixo. Para saber mais, recomendamos a criação de outras funcionalidades seguindo a abordagem que descrevemos no artigo e ampliar seu conhecimento do Express.js.
Resumo
Express.js é a framework mais popular no ecossistema do Node.js, e não é difícil ver o porquê. Ele oferece uma ampla gama de vantagens e funcionalidades das quais se pode se beneficiar.
A curva de aprendizado suave do Express.js o torna muito simples e fácil de começar. Ele abstrai funcionalidades desnecessárias ou indesejadas de aplicativos web e fornece a você uma fina camada de funcionalidades essenciais que permitem flexibilidade.
Além disso, como a framework do Express.js é a base do Node.js, conhecer o Express.js automaticamente dá a você uma boa compreensão de outras frameworks populares. Este conhecimento pode ajudá-lo a tomar decisões vitais na construção da lógica do negócio, qual framework usar além do Express.js, e quando usar pacotes padrão ou de usuários.
Quais são os seus próximos projetos com o Express.js? Escreva para nós na seção de comentários.