O Que É o Node.js? O Runtime JavaScript Explicado
O Node.js é um runtime que permite executar JavaScript fora do navegador, alimentando servidores, ferramentas de build e a maior parte da toolchain JavaScript de CI/CD.
O Node.js pegou o motor JavaScript V8 do Chrome e o envolveu com APIs para arquivos, rede e processos, para que o JavaScript pudesse rodar em servidores e linhas de comando. É a base sob o npm, os bundlers, os test runners e inúmeras ferramentas de CI.
O que é o Node.js
O Node.js é um runtime open-source e multiplataforma construído sobre o motor V8. Ele fornece uma biblioteca padrão para sistema de arquivos, HTTP, streams e processos filhos, além do sistema de módulos que permite importar pacotes. Quando você roda um script de build ou um test runner escrito em JavaScript, é o Node.js que o está executando.
O event loop
O Node.js usa um event loop de thread única e não bloqueante. Em vez de esperar por I/O lento, ele registra callbacks e continua, processando os resultados conforme eles ficam prontos. Isso o torna eficiente para trabalho intensivo em I/O. Trabalho vinculado à CPU ainda pode bloquear o loop, e é por isso que tarefas pesadas costumam ser descarregadas em worker threads ou processos separados.
Um pequeno exemplo
Algumas linhas iniciam um servidor HTTP, mostrando o runtime e sua biblioteca padrão.
import { createServer } from "node:http";
createServer((req, res) => {
res.end("hello from node");
}).listen(3000);Papel no CI/CD
O Node.js está em toda parte no CI, mesmo para projetos que não são JavaScript: gerenciadores de pacotes, linters, bundlers e muitas GitHub Actions são baseados em Node. Pipelines fixam uma versão do Node (frequentemente por uma etapa de setup ou um .nvmrc) para que os builds sejam reproduzíveis. Versões incompatíveis do Node entre local e CI são uma fonte comum de falhas do tipo "funciona na minha máquina", então vale a pena ser explícito sobre a versão.
Alternativas
Deno e Bun são runtimes JavaScript e TypeScript mais novos. O Deno enfatiza segurança e TypeScript embutido; o Bun foca em velocidade e traz junto um gerenciador de pacotes e um test runner. O Node.js continua sendo o padrão por seu ecossistema enorme e suas releases de suporte de longo prazo.
Principais conclusões
- O Node.js executa JavaScript fora do navegador, sobre o motor V8.
- Seu event loop não bloqueante é adequado para cargas de trabalho intensivas em I/O.
- Ele sustenta a maior parte das ferramentas JavaScript de CI/CD; fixe a versão para builds reproduzíveis.