Menu

O que é Node.js? O runtime de JavaScript explicado

Node.js é um runtime que executa JavaScript fora do navegador, em servidores e no terminal. Não é uma linguagem nem um framework: é o V8 mais um event loop mais APIs para arquivos, rede e processos.

Esta página tem editores executáveis. Edite, execute e veja a saída na hora.

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: fs para arquivos, http para servidores, path, process, crypto, events e outras, disponíveis com require ou import sem 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

NavegadorNode.js
RodaEm uma página webEm um terminal ou em um servidor
Temwindow, document, o DOM, localStoragefs, process, http, Buffer, require
Objeto globalwindow (e globalThis)global (e globalThis)
Arquivos no discoSem acessoAcesso total, com as permissões do seu usuário
setTimeout, console, fetch, URLSimSim

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.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

Começar