Node.js é um runtime que executa JavaScript fora do navegador: em um servidor, em um terminal ou como ferramenta de linha de comando. Não é uma linguagem de programação (a linguagem é JavaScript) nem um framework (Express é um framework que roda sobre o Node.js). Ele junta o motor V8 do Google, que executa o JavaScript, com um event loop e APIs nativas para arquivos, rede e processos que os navegadores não têm.
Ele imprimiu o conteúdo do arquivo, a versão major (v24) e undefined para window, porque o Node.js não tem uma página web para te dar uma. fs e process só existem no Node.js; rode as mesmas linhas em uma aba do navegador e a primeira lança um erro.
Node.js é framework ou linguagem?
Nenhum dos dois. JavaScript é a linguagem. O Node.js é o programa que a executa, do mesmo jeito que a JVM executa Java ou o CPython executa Python. Os frameworks ficam por cima: Express, Fastify e NestJS são bibliotecas que você instala em um projeto Node.js. A página Node.js vs JavaScript compara os dois em detalhe.
Por dentro, o Node.js tem quatro partes:
- V8, o motor de JavaScript do Chrome. Ele transforma seu código em código de máquina e o executa.
- libuv, uma biblioteca em C que fornece o event loop e faz o trabalho lento (disco, rede, timers) em segundo plano, depois devolve o resultado para os seus callbacks.
- As APIs do próprio Node:
fspara arquivos,httppara servidores,path,process,crypto,eventse outras, disponíveis comrequireouimportsem instalar nada. - npm, o gerenciador de pacotes que vem com o Node.js e dá acesso ao maior registro de pacotes de qualquer linguagem.
Como rodar um arquivo Node.js
Instale o Node.js pelo site oficial (escolha a versão LTS), depois confira no terminal e rode um arquivo:
node --version # prints v24.x.x or similar
node app.js # runs app.js and exits when it has nothing left to do
node # with no file: an interactive prompt (the REPL)
Um programa termina sozinho quando não há mais nada esperando: nenhum timer, nenhum servidor aberto, nenhuma leitura de arquivo pendente. Por isso um script termina, mas um servidor web continua rodando.
I/O não bloqueante, a ideia central
O Node.js não espera o trabalho lento. Ele inicia uma leitura de arquivo ou uma requisição de rede, continua executando as próximas linhas e chama sua função quando o resultado fica pronto.
As duas linhas de console.log depois de readFile rodaram primeiro, e o conteúdo do arquivo chegou por último. É assim que um único processo Node.js atende milhares de conexões: enquanto uma requisição espera o banco de dados, o event loop mantém as outras andando.
Node.js vs navegador
| Navegador | Node.js | |
|---|---|---|
| Roda | Em uma página web | Em um terminal ou em um servidor |
| Tem | window, document, o DOM, localStorage | fs, process, http, Buffer, require |
| Objeto global | window (e globalThis) | global (e globalThis) |
| Arquivos no disco | Sem acesso | Acesso total, com as permissões do seu usuário |
setTimeout, console, fetch, URL | Sim | Sim |
Para que serve o Node.js
- Servidores web e APIs: backends REST e GraphQL, muitas vezes com Express.
- Apps em tempo real: chat, dashboards ao vivo e jogos multiplayer via WebSockets, onde muitas conexões ficam abertas ao mesmo tempo.
- Ferramentas de linha de comando: o próprio npm, Vite, ESLint, Prettier e o compilador do TypeScript rodam em Node.js.
- Scripts e automação: renomear arquivos, chamar APIs, migrar dados.
O uso mais comum é um servidor HTTP, e o módulo nativo http já basta para o primeiro:
O servidor respondeu GET /hello com o caminho que recebeu. Troque o caminho na barra de requisição para /anything e envie: a resposta acompanha, porque este servidor trata toda URL com uma única função.
Quando escolher Node.js
Escolha Node.js quando o trabalho é principalmente esperar I/O (requisições, bancos de dados, arquivos) e você quer uma única linguagem no frontend e no backend. Ele se encaixa pior em cálculos longos e pesados de CPU, como codificação de vídeo ou processamento numérico grande, porque uma computação longa bloqueia a única thread de JavaScript e todas as outras requisições ficam esperando.
Perguntas frequentes
Node.js é frontend ou backend?
Backend, na maior parte. O Node.js roda em um servidor ou na sua máquina, não no navegador do visitante. Mesmo assim, quem faz frontend usa todo dia, porque ferramentas como npm, Vite e ESLint são programas Node.js.
Quem criou o Node.js e quando?
Ryan Dahl lançou o Node.js em 2009. Hoje ele é mantido pela OpenJS Foundation, com uma versão major nova a cada seis meses, e as versões pares recebem suporte de longo prazo (LTS).
Preciso saber JavaScript antes de aprender Node.js?
Sim, pelo menos o básico: variáveis, funções, objetos, arrays e callbacks ou promises. O Node.js adiciona APIs, não sintaxe nova, então tudo o que você aprende da linguagem vale direto.
O Node.js é single-threaded?
Seu JavaScript roda em uma thread só. Por trás, o Node.js usa um pequeno thread pool para trabalho de sistema de arquivos, DNS e parte da criptografia, então um I/O lento não bloqueia seu código enquanto espera.