Introdução ao Node.js
Nesta aula, você aprenderá o que é o Node.js, um runtime JavaScript fora do navegador, como executar seu primeiro script e as principais diferenças entre o ambiente do Node.js e o do navegador. Vamos explorar desde a instalação até a execução de código, com exemplos práticos e exercícios para fixar o conteúdo.
O Node.js é um runtime JavaScript que permite executar código JavaScript fora do navegador. Ele foi criado em 2009 por Ryan Dahl e, desde então, tornou-se uma das tecnologias mais populares para desenvolvimento back-end, ferramentas de linha de comando e aplicações de rede. Com o Node.js, você pode usar JavaScript tanto no cliente quanto no servidor, unificando a linguagem em todo o stack de desenvolvimento.
Nesta aula, vamos explorar o que é o Node.js, como ele funciona como um runtime fora do navegador, como criar e executar seu primeiro script, e quais são as principais diferenças entre o ambiente do Node.js e o ambiente do navegador. Ao final, você terá uma base sólida para começar a desenvolver aplicações com Node.js.
O que é
Node.js é um ambiente de execução (runtime) JavaScript construído sobre o motor V8 do Google Chrome. Ele permite que o JavaScript seja executado no servidor, fora do navegador, possibilitando a criação de aplicações back-end, APIs, ferramentas de linha de comando, automação e muito mais. Diferente de linguagens como PHP ou Python, que precisam de um servidor web para rodar, o Node.js é um runtime completo que pode ser executado diretamente no sistema operacional.
O Node.js é baseado em um modelo de I/O não bloqueante e orientado a eventos, o que o torna extremamente eficiente para aplicações que lidam com muitas operações de entrada e saída, como servidores web, chatbots e sistemas de tempo real. Ele também possui um ecossistema gigante de pacotes, gerenciado pelo npm (Node Package Manager), que permite adicionar funcionalidades prontas aos seus projetos com facilidade.
Para instalar o Node.js, basta acessar o site oficial (nodejs.org) e baixar o instalador para o seu sistema operacional. Após a instalação, você pode verificar a versão instalada com o comando node --version no terminal.
// Verificando a versão do Node.js no terminal
$ node --version
v20.11.0Runtime fora do browser
O Node.js é um runtime fora do navegador, o que significa que ele fornece um ambiente de execução para JavaScript que não depende de um navegador. Isso é possível porque o Node.js inclui o motor V8, que interpreta e executa o JavaScript, além de oferecer APIs próprias para acesso ao sistema de arquivos, rede, processos, etc.
Diferente do navegador, onde o JavaScript é executado em um ambiente restrito e voltado para manipulação do DOM, no Node.js você pode fazer coisas como ler e escrever arquivos, criar servidores HTTP, conectar-se a bancos de dados e interagir com o sistema operacional. Isso abre um mundo de possibilidades para o desenvolvimento de aplicações back-end.
Um exemplo simples é o módulo fs (file system), que permite ler arquivos do disco. Veja como ler um arquivo de texto:
// leitura de arquivo com Node.js
const fs = require('fs');
fs.readFile('mensagem.txt', 'utf8', (err, data) => {
if (err) {
console.error('Erro ao ler o arquivo:', err);
return;
}
console.log('Conteúdo do arquivo:', data);
});Esse código lê o arquivo mensagem.txt de forma assíncrona, ou seja, não bloqueia a execução enquanto espera a leitura terminar. Essa é uma das principais características do Node.js: ser assíncrono e não bloqueante, o que permite lidar com muitas operações simultâneas sem travar o sistema.
Primeiro script
Vamos criar nosso primeiro script em Node.js. Para isso, você precisa ter o Node.js instalado. Crie um arquivo chamado ola.js com o seguinte conteúdo:
// ola.js
console.log('Olá, mundo!');Para executar o script, abra o terminal na pasta onde o arquivo está salvo e digite:
$ node ola.js
Olá, mundo!Pronto! Você acabou de executar seu primeiro script em Node.js. O comando node seguido do nome do arquivo executa o código JavaScript contido nele.
Você também pode usar o Node.js em modo interativo, chamado REPL (Read-Eval-Print Loop), digitando apenas node no terminal. Isso abre um prompt onde você pode digitar comandos JavaScript diretamente:
$ node
> 2 + 2
4
> console.log('Olá')
Olá
undefined
> .exitO REPL é útil para testar pequenos trechos de código e explorar as APIs do Node.js.
Diferenças do browser
Embora o JavaScript seja a mesma linguagem no navegador e no Node.js, os ambientes são diferentes. Aqui estão as principais diferenças:
- Objeto global: No navegador, o objeto global é
window, que contém o DOM e outras APIs. No Node.js, o objeto global églobal, que não tem acesso ao DOM. - Módulos: No navegador, o código é geralmente dividido em scripts e carregado via tags
script. No Node.js, usamos o sistema de módulos CommonJS (ou ES Modules) para importar e exportar código entre arquivos. - APIs: O navegador oferece APIs como
fetch,localStorage,document, etc. O Node.js oferece APIs para sistema de arquivos, rede, processos, etc. - I/O: No navegador, a entrada e saída são limitadas (por exemplo, via
fetchpara requisições HTTP). No Node.js, você pode ler e escrever arquivos, criar servidores, etc. - Execução: No navegador, o código é executado em um ambiente de segurança que impede acesso ao sistema de arquivos. No Node.js, você tem acesso total ao sistema operacional.
Vamos ver um exemplo prático: como criar um servidor HTTP simples com Node.js. Isso não é possível no navegador.
// servidor.js
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Olá, mundo!\n');
});
server.listen(3000, () => {
console.log('Servidor rodando em http://localhost:3000/');
});Execute o script com node servidor.js e acesse http://localhost:3000 no seu navegador para ver a mensagem.
Boas práticas e observações finais
Ao trabalhar com Node.js, é importante adotar algumas boas práticas:
- Use módulos: Divida seu código em módulos para facilitar a manutenção e reutilização.
- Prefira código assíncrono: Use callbacks, Promises ou async/await para evitar bloquear o event loop.
- Trate erros: Sempre trate erros em operações de I/O e em outras chamadas assíncronas.
- Mantenha o código limpo: Siga padrões de estilo e boas práticas de JavaScript.
Nesta aula, você aprendeu o que é o Node.js, como executar scripts e as principais diferenças em relação ao navegador. Na próxima aula, vamos aprofundar em módulos e no npm.
Referências
- Sobre o Node.js - Documentação oficial
- Guia de Introdução ao Node.js
- Introdução ao JavaScript - MDN
- Documentação do módulo fs
- Documentação do módulo http
- npm - Gerenciador de pacotes
- Event Loop no Node.js
Exercícios
Explique com suas palavras o que é o Node.js e qual a principal diferença entre o JavaScript no navegador e no Node.js.
✓ Resposta: O Node.js é um ambiente de execução JavaScript fora do navegador, baseado no motor V8. A principal diferença é que no navegador o JavaScript é voltado para manipulação do DOM e interação com o usuário, enquanto no Node.js você tem acesso ao sistema de arquivos, rede e outras APIs do sistema operacional, permitindo criar aplicações back-end.Crie um script Node.js que imprima seu nome e sua idade no console. Execute-o e mostre a saída.
✓ Resposta: Crie um arquivomeus-dados.jscom o seguinte conteúdo:
Execute comconsole.log('Maria da Silva'); console.log(30);node meus-dados.js. A saída será:Maria da Silva 30Escreva um script que leia um arquivo de texto chamado
dados.txte imprima seu conteúdo no console. Use o módulofs.✓ Resposta:const fs = require('fs'); fs.readFile('dados.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); });O que é o REPL do Node.js e para que ele serve? Dê um exemplo de uso.
✓ Resposta: O REPL é um ambiente interativo que permite executar código JavaScript diretamente no terminal. Basta digitarnodee pressionar Enter. Exemplo:$ node > 1 + 1 2 > console.log('Olá, Node!') Olá, Node! undefined > .exitCite três diferenças entre o ambiente do navegador e o do Node.js.
✓ Resposta: 1. Objeto global: no navegador éwindow, no Node églobal.
2. APIs: o navegador tem DOM e APIs de cliente; o Node tem módulos comofs,http.
3. Módulos: no navegador usamosscripttags; no Node usamos CommonJS/ES Modules.