Tutorial do Framework Node.js Express.js
โก Resumo Inteligente
Express.js รฉ um framework minimalista para aplicaรงรตes web em Node.js que adiciona roteamento, middleware e renderizaรงรฃo de templates ao mรณdulo HTTP principal, permitindo que aplicaรงรตes de pรกgina รบnica, mรบltiplas pรกginas e hรญbridas alcancem um servidor funcional com pouquรญssimas linhas de cรณdigo.
Neste tutorial, estudaremos o framework Express. Este framework foi desenvolvido de forma a funcionar como um framework de aplicaรงรฃo web Node.js minimalista e flexรญvel, fornecendo um conjunto robusto de recursos para a construรงรฃo de aplicaรงรตes web de pรกgina รบnica, multipรกgina e hรญbridas.
O que รฉ Express.js?
Express.js รฉ um framework de servidor de aplicaรงรตes web Node.js, projetado especificamente para a construรงรฃo de aplicaรงรตes web de pรกgina รบnica, mรบltiplas pรกginas e hรญbridas.
Tornou-se o framework de servidor padrรฃo para Node.js. O Express รฉ a parte de backend de algo conhecido como MEAN stack.
O Express oferece roteamento e middleware em camadas sobre o nรบcleo HTTP do Node.js. cรณrregos e APIs de eventos.
O MEAN รฉ gratuito e de cรณdigo aberto JavaScript pilha de software para construรงรฃo de sites e aplicaรงรตes web dinรขmicos que possui os seguintes componentes;
1) MongoDB โ O banco de dados NoSQL padrรฃo
2) Expresso.js โ A estrutura padrรฃo para aplicaรงรตes web
3) AngularJS - O JavaFramework Script MVC usado para aplicaรงรตes web
4) Node.js โ Framework utilizado para aplicaรงรตes escalรกveis โโde servidor e de rede.
A estrutura Express.js torna muito fรกcil desenvolver um aplicativo que pode ser usado para lidar com vรกrios tipos de solicitaรงรตes, como solicitaรงรตes GET, PUT e POST e DELETE.
Instalando e usando o Express
Express รฉ instalado atravรฉs do Node Package Manager. Isso pode ser feito executando a seguinte linha na linha de comando
npm instalar expresso
O comando acima solicita ao Node Package Manager que baixe o pacote express necessรกrio. mรณdulos e instale-os de acordo.
Nota de versรฃo: O npm agora instala o Express 5.2; muitos projetos ainda usam o Express 4. Ambos executam os exemplos abaixo em um Versรฃo compatรญvel com Node.js.
Vamos usar nosso framework Express recรฉm-instalado e criar um aplicativo simples โHello Worldโ.
Nosso aplicativo criarรก um simples mรณdulo de servidor que ficarรก escutando na porta 3000. Em nosso exemplo, se uma requisiรงรฃo for feita atravรฉs do navegador nessa porta, o servidor enviarรก uma resposta "Olรก Mundo" para o cliente.
var express=require('express'); var app=express(); app.get('/',function(req,res) { res.send('Hello World!'); }); var server=app.listen(3000,function() {});
Code Explicaรงรฃo:
- Em nossa primeira linha de cรณdigo, estamos usando a funรงรฃo require para incluir o โmรณdulo expressoโ.
- Antes de comeรงarmos a usar o mรณdulo express, precisamos transformรก-lo em um objeto.
- Aqui, estamos criando uma funรงรฃo de retorno de chamada (callback). Essa funรงรฃo serรก chamada sempre que alguรฉm acessar a raiz do nosso aplicativo web, que รฉ http://localhost:3000. A funรงรฃo de retorno de chamada serรก usada para enviar a string 'Olรก Mundo' para a pรกgina web.
- Na funรงรฃo de retorno de chamada, estamos enviando a string โHello Worldโ de volta ao cliente. O parรขmetro 'res' รฉ usado para enviar conteรบdo de volta para a pรกgina web. Este parรขmetro 'res' รฉ fornecido pelo mรณdulo 'request' para permitir o envio de conteรบdo de volta para a pรกgina da web.
- Em seguida, usamos a funรงรฃo listen para fazer com que nosso aplicativo servidor escute as solicitaรงรตes do cliente na porta 3000. Vocรช pode especificar qualquer porta disponรญvel aqui.
Se o comando for executado com sucesso, a seguinte saรญda serรก mostrada quando vocรช executar seu cรณdigo no navegador.
Saรญda:
Da saรญda,
- Vocรช pode ver isso claramente se navegar atรฉ o URL Ao acessar o localhost na porta 3000, vocรช verรก a string 'Hello World' exibida na pรกgina.
- Como especificamos em nosso cรณdigo que o servidor deve escutar na porta 3000, conseguimos visualizar a saรญda ao acessar este endereรงo. URL.
O que sรฃo rotas?
Uma รบnica rota raiz รฉ apenas o ponto de partida.
O roteamento determina a forma como uma aplicaรงรฃo responde a uma solicitaรงรฃo de um cliente para um determinado ponto de extremidade.
Por exemplo, um cliente pode fazer uma requisiรงรฃo HTTP GET, POST, PUT ou DELETE para diversos fins. URL tais como as mostradas abaixo;
http://localhost:3000/Books http://localhost:3000/Students
No exemplo acima,
- Se uma solicitaรงรฃo GET for feita pela primeira vez URL, entรฃo a resposta ideal deveria ser uma lista de livros.
- Se a solicitaรงรฃo GET for feita pela segunda vez URL, entรฃo a resposta idealmente deveria ser uma lista de alunos.
- Entรฃo, com base em URL Ao acessar uma determinada pรกgina, uma funcionalidade diferente do servidor web serรก invocada e, consequentemente, a resposta serรก enviada ao cliente. Esse รฉ o conceito de roteamento.
Cada rota pode ter uma ou mais funรงรตes de tratamento, que sรฃo executadas quando a rota รฉ correspondida.
A sintaxe geral para uma rota รฉ mostrada abaixo
app.METHOD(PATH, HANDLER)
Em que,
1) app รฉ uma instรขncia do mรณdulo expresso
2) METHOD รฉ um mรฉtodo de solicitaรงรฃo HTTP (GET, POST, PUT ou DELETE)
3) PATH รฉ um caminho no servidor.
4) HANDLER รฉ a funรงรฃo executada quando a rota รฉ correspondida.
| Ligar | SOLICITAรรO | Propรณsito |
|---|---|---|
| app.get(CAMINHO, MANIPULADOR) | ENTRE | Leia |
| app.post(CAMINHO, MANIPULADOR) | POST | Criar |
| app.put(CAMINHO, MANIPULADOR) | PUT | Substituir |
| app.delete(PATH, HANDLER) | EXCLUIR | Eliminar |
| app.route(CAMINHO) | Acorrentado | manipuladores de grupo |
| app.use(HANDLER) | Qualquer | Middleware de montagem |
โ ๏ธ Expresso 5 notas: essas assinaturas permanecem inalteradas, mas app.del() tornou-se app.delete(), res.sendfile() tornou-se res.sendFile() e os curingas agora precisam de nomes como /*splat.
Vejamos um exemplo de como podemos implementar rotas no Express. Nosso exemplo criarรก 3 rotas da seguinte forma:
- Uma rota /Node que exibirรก a string โTutorial on Nodeโ se esta rota for acessada
- Uma rota /Angular que exibirรก a string โTutorial on Angularโ se esta rota for acessada
- Uma rota padrรฃo / que exibirรก a mensagem โBem-vindo ao Guru99 tutoriais.โ
Nosso cรณdigo bรกsico permanecerรก o mesmo dos exemplos anteriores. O trecho abaixo รฉ um complemento para mostrar como o roteamento รฉ implementado.
var express = require('express'); var app = express(); app.route('/Node').get(function(req,res) { res.send("Tutorial on Node"); }); app.route('/Angular').get(function(req,res) { res.send("Tutorial on Angular"); }); app.get('/',function(req,res){ res.send('Welcome to Guru99 Tutorials'); });
Code Explicaรงรฃo:
- Aqui estamos definindo uma rota se o URL http://localhost:3000/Node is selected in the browser. To the route, we are attaching a callback function which will be called when we browse to the Node URLA funรงรฃo possui 2 parรขmetros.
- O principal parรขmetro que utilizaremos รฉ o parรขmetro 'res', que pode ser utilizado para enviar informaรงรตes de volta ao cliente.
- O parรขmetro 'req' contรฉm informaรงรตes sobre a solicitaรงรฃo que estรก sendo feita. รs vezes, parรขmetros adicionais podem ser enviados como parte da solicitaรงรฃo feita e, portanto, o parรขmetro 'req' pode ser usado para localizar os parรขmetros adicionais que estรฃo sendo enviados.
- Estamos usando a funรงรฃo send para enviar a string โTutorial on Nodeโ de volta ao cliente se a rota do Node for escolhida.
- Aqui estamos definindo uma rota se o URL http://localhost:3000/Angular is selected in the browser. To the route, we are attaching a callback function which will be called when we browse to the Angular URL.
- Estamos usando a funรงรฃo send para enviar a string โTutorial on Angularโ de volta ao cliente se a rota Angular for escolhida.
- Esta รฉ a rota padrรฃo escolhida ao acessar a raiz da aplicaรงรฃo โ http://localhost:3000. Ao escolher a rota padrรฃo, a mensagem โBem-vindo ao Guru"99 tutoriais" serรฃo enviados ao cliente.
Se o comando for executado com sucesso, a seguinte saรญda serรก mostrada quando vocรช executar seu cรณdigo no navegador.
Saรญda:
Da saรญda,
- Vocรช pode ver isso claramente se navegar atรฉ o URL Ao acessar o localhost na porta 3000, vocรช verรก a string 'Welcome to Guru99 tutoriais exibidos na pรกgina.
- Porque em nosso cรณdigo, mencionamos que nosso padrรฃo รฉ URL exibirรก esta mensagem.
Em seguida, navegue atรฉ /Node.
Da saรญda,
- Vocรช pode ver que se o URL se a rota for alterada para /Node, a rota Node correspondente serรก selecionada e a string โTutorial on Nodeโ serรก exibida.
Em seguida, navegue atรฉ /Angular.
Da saรญda,
- Vocรช pode ver que se o URL se a rota for alterada para /Angular, a rota Node correspondente serรก selecionada e a string โTutorial on Angularโ serรก exibida.
Exemplo de servidor Web usando express.js
No exemplo acima, vimos como podemos decidir qual saรญda exibir com base no roteamento. Esse tipo de roteamento รฉ usado na maioria das aplicaรงรตes web modernas. A outra parte de um servidor web envolve o uso de templates em Node.js.
Ao criar aplicaรงรตes Node.js rรกpidas e prรกticas, uma maneira fรกcil e รกgil รฉ usar templates. Existem muitos frameworks disponรญveis no mercado para a criaรงรฃo de templates. Neste caso, usaremos o framework Jade como exemplo.
O Jade รฉ instalado atravรฉs do Node Package Manager. Isso pode ser feito executando a seguinte linha na linha de comando.
npm instalar jade
O comando acima solicita ao Node Package Manager que baixe os mรณdulos Jade necessรกrios e os instale adequadamente.
OBSERVAรรO: Na versรฃo mais recente do Node, o jade foi descontinuado. Em vez disso, use pug.
โ ๏ธ Equivalente moderno: instalar Pug, renomeie index.jade para index.pug e defina app.set('view engine','pug'). O pacote jade nรฃo recebe atualizaรงรตes; as etapas abaixo ainda sรฃo executadas.
Vamos usar o framework Jade que acabamos de instalar e criar alguns modelos bรกsicos.
Passo 1) O primeiro passo รฉ criar um modelo Jade. Crie um arquivo chamado index.jade e insira o cรณdigo abaixo. Certifique-se de criar o arquivo na pasta โviewsโ.
- Aqui estamos especificando que o tรญtulo da pรกgina serรก alterado para qualquer valor passado quando este modelo for invocado.
- Tambรฉm estamos especificando que o texto na tag de cabeรงalho serรก substituรญdo por qualquer texto passado no modelo Jade.
Segue abaixo o cรณdigo do aplicativo que o renderiza.
var express=require('express'); var app=express(); app.set('view engine','jade'); app.get('/',function(req,res) { res.render('index', {title:'Guru99',message:'Welcome'}) }); var server=app.listen(3000,function() {});
Code Explicaรงรฃo:
- A primeira coisa a especificar na aplicaรงรฃo รฉ o "mecanismo de visualizaรงรฃo" que serรก usado para renderizar os templates. Como usaremos o Jade para renderizar nossos templates, especificamos isso de acordo.
- A funรงรฃo render รฉ usada para renderizar uma pรกgina da web. Em nosso exemplo, estamos renderizando o modelo (index.jade) que foi criado anteriormente.
- Estamos transmitindo os valores de โGuruOs valores โ99โ e โWelcomeโ serรฃo substituรญdos pelos parรขmetros โtitleโ e โmessageโ, respectivamente. Esses valores serรฃo substituรญdos pelos parรขmetros 'title' e 'message' declarados no modelo index.jade.
Se o comando for executado com sucesso, a seguinte saรญda serรก mostrada quando vocรช executar seu cรณdigo no navegador.
Saรญda:
Da saรญda,
- Podemos ver que o tรญtulo da pรกgina รฉ definido como โGuru99โ e o cabeรงalho da pรกgina รฉ definido como โBem-vindoโ.
- Isso ocorre devido ao modelo Jade que รฉ invocado em nossa aplicaรงรฃo Node.js.









