Node.js é uma plataforma JavaScript que permite que você crie aplicativos do lado do servidor eficientes. Neste tutorial, vamos criar um servidor web simples usando apenas o Node.js, sem nenhum framework. Isso ajudará você a entender os conceitos básicos de como um servidor funciona.
Comece criando um novo diretório para o projeto e inicializando um arquivo package.json
para gerenciar as dependências e scripts do projeto. Abra seu terminal e siga os passos abaixo:
# Crie um diretório para o projeto
mkdir meu-servidor-node
# Acesse o diretório
cd meu-servidor-node
# Crie um diretório para o cliente
mkdir client
# Crie um diretório para o servidor
mkdir server
# Acesse o diretório do servidor
cd server
# Inicialize um arquivo package.json para o servidor
npm init
Ao executar o comando npm init
no diretório do servidor, você será solicitado a preencher informações sobre o seu projeto do servidor. Você pode preencher as informações conforme necessário ou pressionar Enter para aceitar as configurações padrão.
Usaremos o módulo http
incorporado do Node.js para criar o servidor. No entanto, também usaremos o pacote nodemon
para facilitar o desenvolvimento, pois ele reiniciará automaticamente o servidor sempre que você fizer alterações no código.
No diretório do servidor, instale o nodemon
como uma dependência de desenvolvimento executando o seguinte comando:
npm install nodemon --save-dev
Agora, crie um arquivo index.js
na raiz do seu diretório do servidor. Este será o arquivo principal do servidor. Vamos adicionar o código para criar o servidor HTTP simples:
const http = require('http')
const fs = require('fs')
const port = 8080
const server = http.createServer((request, response) => {
response.writeHead(200, { 'Content-Type': 'text/html' })
if (request.url === '/') {
fs.readFile('../client/index.html', (error, content) => {
if (error) {
response.writeHead(404, { 'Content-type': 'text/plain' })
} else {
response.end(content)
}
})
} else if (request.url === '/test') {
response.end('Deu certo!')
} else {
response.writeHead(404, { 'Content-type': 'text/plain' })
response.end('Page Not Found')
}
})
server.listen(port, () => {
console.log(`Servidor Executando na Porta: http://localhost:${port}/`)
})
Neste código:
- Importamos os módulos
http
efs
para criar o servidor e lidar com o sistema de arquivos. - Definimos a porta na qual o servidor será executado (8080 no nosso exemplo).
- Criamos o servidor usando
http.createServer()
e definimos como ele deve responder às solicitações. response.writeHead(200, { 'Content-Type': 'text/html' })
: Esta função define o cabeçalho da resposta HTTP.response.end()
: Esta função é usada para encerrar a resposta HTTP e enviá-la de volta ao cliente. Dependendo do contexto, ela pode ser usada para enviar conteúdo, como o conteúdo HTML ou mensagens de erro.server.listen(port, () => { ... })
: Esta função inicia o servidor e começa a ouvir as solicitações na porta especificada.
Agora, crie um arquivo HTML simples na pasta do cliente (diretório "client" que criamos anteriormente). Certifique-se de salvá-lo com o nome index.html
.
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Hello World!</h1>
<h2>Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempora deleniti, minus veniam totam debitis earum quasi ea. Provident ipsam unde, veritatis vel ipsa eos, cupiditate non vero numquam architecto quaerat?</h2>
</body>
</html>
Esse é um exemplo simples, mas é suficiente para ilustrar como o servidor enviará o conteúdo HTML para os clientes que acessarem o servidor.
Agora que o servidor e o arquivo HTML estão prontos, você pode iniciar o servidor usando o nodemon
que instalamos anteriormente. No diretório do servidor, execute o seguinte comando:
npm nodemon index.js
Isso iniciará o servidor e, se tudo estiver correto, você verá uma mensagem indicando que o servidor está em execução na porta 8080. Abra seu navegador e acesse http://localhost:8080/
para ver o conteúdo da página HTML.
Parabéns! Você criou com sucesso um servidor web simples com Node.js puro. Este é um ponto de partida para entender os conceitos básicos de como criar servidores web usando Node.js e pode ser expandido para criar aplicativos mais complexos.