Neste tutorial, estudaremos o framework Express. Esta estrutura é construída de forma a atuar como uma estrutura de aplicativo da web Node.js mínima e flexível, fornecendo um conjunto robusto de recursos para a construção de aplicativos da web híbridos e com várias páginas.
Neste tutorial, você aprenderá-
- O que é Express.js?
- Instalando e usando o Express
- O que são rotas?
- Servidor da Web de amostra usando express.js
O que é Express.js?
Express.js é uma estrutura de servidor de aplicativos da web Node js, que é especificamente projetada para a construção de aplicativos da web híbridos, de uma página e de várias páginas.
Tornou-se a estrutura de servidor padrão para node.js. Express é a parte de back-end de algo conhecido como pilha MEAN.
O MEAN é uma pilha de software JavaScript gratuita e de código aberto para a construção de sites e aplicativos da web dinâmicos que possui os seguintes componentes;
1) MongoDB - O banco de dados NoSQL padrão
2) Express.js - A estrutura de aplicativos da web padrão
3) Angular.js - A estrutura JavaScript MVC usada para aplicativos da web
4) Node.js - Framework usado para aplicativos escaláveis do lado do 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 GET, PUT e POST e DELETE.
Instalando e usando o Express
O Express é instalado por meio do Node Package Manager. Isso pode ser feito executando a seguinte linha na linha de comando
npm install express
O comando acima solicita que o gerenciador de pacotes do Node baixe os módulos express necessários e instale-os de acordo.
Vamos usar nossa estrutura Express recém-instalada e criar um aplicativo simples "Hello World".
Nosso aplicativo criará um módulo de servidor simples que ouvirá na porta de número 3000. Em nosso exemplo, se uma solicitação for feita por meio do navegador neste número de porta, o aplicativo de servidor enviará uma resposta 'Hello' World 'ao cliente .
var express=require('express');var app=express();app.get('/',function(req,res){res.send('Hello World!');});var server=app.listen(3000,function() {});
Explicação do código:
- 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. Esta função será chamada sempre que alguém navegar até a raiz de nosso aplicativo da web, que é http: // localhost: 3000 . A função de retorno de chamada será usada para enviar a string 'Hello World' para a página da 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 à página da web. Este parâmetro 'res' é fornecido pelo módulo 'request' para permitir o envio de conteúdo de volta à página da web.
- Em seguida, estamos usando a função escutar para fazer nosso aplicativo de servidor escutar as solicitações do cliente na porta nº 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.
Resultado:
Da saída,
- Você pode ver claramente que, se navegarmos até a URL de localhost na porta 3000, você verá a string 'Hello World' exibida na página.
- Como em nosso código mencionamos especificamente para o servidor escutar na porta nº 3000, podemos visualizar a saída ao navegar para este URL.
O que são rotas?
O roteamento determina a maneira como um aplicativo responde a uma solicitação do cliente para um determinado terminal.
Por exemplo, um cliente pode fazer uma solicitação GET, POST, PUT ou DELETE http para vários URLs, como os mostrados abaixo;
http://localhost:3000/Bookshttp://localhost:3000/Students
No exemplo acima,
- Se uma solicitação GET for feita para o primeiro URL, o ideal é que a resposta seja uma lista de livros.
- Se a solicitação GET for feita para o segundo URL, o ideal é que a resposta seja uma lista de Alunos.
- Portanto, com base na URL acessada, uma funcionalidade diferente no servidor da web será chamada e, consequentemente, a resposta será enviada ao cliente. Este é 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.
Vejamos um exemplo de como podemos implementar rotas no expresso. Nosso exemplo criará 3 rotas como
- Uma rota / Node que exibirá a string "Tutorial on Node" se esta rota for acessada
- Rota A / Angular que exibirá a string "Tutorial on Angular" se esta rota for acessada
- Uma rota padrão / que exibirá a string "Welcome to Guru99 Tutorials."
Nosso código básico permanecerá o mesmo dos exemplos anteriores. O snippet a seguir é 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');}));
Explicação do código:
- Aqui estamos definindo uma rota se a URL http: // localhost: 3000 / Node for selecionada no navegador. Para a rota, estamos anexando uma função de retorno de chamada que será chamada quando navegarmos para a URL do nó.
A função possui 2 parâmetros.
- O principal parâmetro que usaremos é o parâmetro 'res', que pode ser usado 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 que está sendo 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 de envio para enviar a string "Tutorial no Nó" de volta ao cliente se a rota do Nó for escolhida.
- Aqui estamos definindo uma rota se o URL http: // localhost: 3000 / Angular for selecionado no navegador. À rota, estamos anexando uma função de retorno de chamada que será chamada quando navegarmos para a URL Angular.
- Estamos usando a função de envio para enviar a string "Tutorial em Angular" de volta para o cliente se a rota Angular for escolhida.
- Esta é a rota padrão que é escolhida quando se navega para a rota do aplicativo - http: // localhost: 3000 . Quando a rota padrão é escolhida, a mensagem "Welcome to Guru99 Tutorials" será enviada ao cliente.
Se o comando for executado com sucesso, a seguinte Saída será mostrada quando você executar seu código no navegador.
Resultado:
Da saída,
- Você pode ver claramente que, se navegarmos para a URL de localhost na porta 3000, você verá a string 'Welcome to Guru99 Tutorials' exibida na página.
- Porque em nosso código, mencionamos que nosso URL padrão exibiria esta mensagem.
Da saída,
- Você pode ver que se o URL foi alterado para / Node, a rota do respectivo Node seria escolhida e a string "Tutorial On Node" é exibida.
Da saída,
- Você pode ver que se o URL foi alterado para / Angular, a respectiva rota do nó seria escolhida e a string "Tutorial On Angular" é exibida.
Servidor da Web de amostra usando express.js
Em nosso exemplo acima, vimos como podemos decidir qual saída mostrar com base no roteamento. Esse tipo de roteamento é o que é usado na maioria dos aplicativos da Web modernos. A outra parte de um servidor web é sobre o uso de modelos no Node js.
Ao criar aplicativos Node rápidos e dinâmicos, uma maneira fácil e rápida é usar modelos para o aplicativo. Existem muitos frameworks disponíveis no mercado para fazer modelos. Em nosso caso, usaremos o exemplo da estrutura de jade para modelagem.
O Jade é instalado por meio do gerenciador de pacotes Node. Isso pode ser feito executando a seguinte linha na linha de comando
npm instalar jade
O comando acima solicita que o gerenciador de pacotes do Node baixe os módulos jade necessários e os instale de acordo.
NOTA: Na versão mais recente do Node, o jade tornou-se obsoleto. Em vez disso, use o pug.
Vamos usar nossa estrutura jade recém-instalada e criar alguns modelos básicos.
Etapa 1) A primeira etapa é 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 que seja passado quando este modelo for invocado.
- Também estamos especificando que o texto na tag de cabeçalho será substituído por tudo o que for passado no modelo jade.
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() {});
Explicação do código:
- A primeira coisa a especificar no aplicativo é o "mecanismo de visualização" que será usado para renderizar os modelos. Como usaremos jade para renderizar nossos modelos, 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 passando os valores de "Guru99" e "Welcome" para os parâmetros "title" e "message" respectivamente. Esses valores serão substituídos pelos parâmetros 'título' e 'mensagem' 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.
Resultado:
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 por causa do modelo jade que é invocado em nosso aplicativo node js.
Resumo
- A estrutura expressa é a estrutura mais comum usada para desenvolver aplicativos Node js. A estrutura expressa é construída em cima da estrutura node.js e ajuda no desenvolvimento acelerado de aplicativos baseados em servidor.
- As rotas são usadas para desviar os usuários para diferentes partes dos aplicativos da web com base na solicitação feita. A resposta para cada rota pode variar dependendo do que precisa ser mostrado ao usuário.
- Os modelos podem ser usados para injetar conteúdo de maneira eficiente. Jade é um dos mecanismos de modelagem mais populares usados em aplicativos Node.js.