Node.js do Zero: Guia Completo para Iniciantes 2026
Node.js do zero ao primeiro projeto no ar. Setup, módulos, npm, Express, async/await e deploy gratuito. Tudo que você precisa para começar no backend JavaScript.
Por que isso é importante
Node.js do zero ao primeiro projeto no ar. Setup, módulos, npm, Express, async/await e deploy gratuito. Tudo que você precisa para começar no backend JavaScript.
O que é Node.js
Node.js é um runtime JavaScript que executa código fora do browser. Construído sobre o V8 engine do Chrome, ele permite usar JavaScript para criar servidores, APIs, ferramentas CLI e aplicações desktop. Lançado em 2009, hoje alimenta milhões de aplicações em produção.
O diferencial do Node.js: modelo event-driven e non-blocking I/O. Enquanto linguagens tradicionais bloqueiam a thread esperando operações de banco ou disco, Node.js continua processando outros requests. Isso permite lidar com milhares de conexões simultâneas em uma única thread.
Node.js não é
Não é uma linguagem: Node.js usa JavaScript. A linguagem é a mesma do browser.
Não é um framework: Express, Fastify e NestJS são frameworks. Node.js é o runtime que os executa.
Não é apenas para web: Também usado para CLIs (npm), desktop (Electron), IoT e machine learning.
Instalação e Setup
A forma recomendada de instalar Node.js em 2026: use um version manager. Ele permite alternar entre versões sem conflitos e sem sudo/admin.
winget install Schniz.fnm. Depois: fnm install 22 para a versão LTS mais recente.curl -fsSL https://fnm.vercel.app/install | bash. Execute fnm install 22 e fnm use 22.node -v (deve mostrar v22.x) e npm -v (v10.x). Ambos devem funcionar no terminal.Por que fnm ao invés de nvm
fnm é 40x mais rápido que nvm para trocar versões. Escrito em Rust, funciona em Windows, macOS e Linux nativamente. Suporta .node-version e .nvmrc para projetos com versões específicas.
Primeiro Programa
Crie um arquivo index.js e execute com node index.js. O Node.js lê o arquivo, compila com V8 e executa. Sem browser, sem HTML, direto no terminal.
Comece com console.log("Hello Node.js"). Parece simples, mas esse console.log roda no servidor, não no browser. O mesmo JavaScript, dois ambientes diferentes. No Node.js você tem acesso a filesystem, rede e processos do sistema operacional.
Módulos: Como Organizar Código
Node.js organiza código em módulos. Cada arquivo é um módulo isolado. Existem dois sistemas: CommonJS (require) e ES Modules (import/export). Em 2026, ES Modules é o padrão recomendado.
ES Modules (Recomendado)
Padrão moderno com import/export
Prós
- Padrão do JavaScript (browser + Node.js)
- Tree-shaking para bundles menores
- Top-level await suportado
- Análise estática pelo editor
Contras
- Requer "type": "module" no package.json
- Extensão .mjs se sem package.json
- Alguns pacotes antigos só suportam CJS
CommonJS (Legado)
Sistema original com require
Prós
- Compatível com 100% dos pacotes npm
- Padrão sem configuração
- Require condicional funciona
Contras
- Sem tree-shaking
- Sem top-level await
- Não funciona no browser
- Análise estática limitada
npm: O Gerenciador de Pacotes
npm é o maior registro de pacotes do mundo com mais de 2 milhões de packages. Ele vem instalado com Node.js e gerencia dependências, scripts e metadados do projeto.
npm init -y cria o package.json com defaults. Edite name, version e description depois.npm install express adiciona em dependencies. npm install -D nodemon adiciona em devDependencies (apenas desenvolvimento)."start": "node src/server.js" e "dev": "nodemon src/server.js". Execute com npm run dev.node_modules/ no .gitignore. A pasta pode ter 200MB+. Outros devs instalam com npm install a partir do package.json.Async/Await: Código Assíncrono
Node.js é assíncrono por natureza. Operações de I/O (banco, arquivo, rede) não bloqueiam a execução. Async/await é a sintaxe moderna para lidar com código assíncrono de forma legível.
async e use await para esperar o resultado. O código parece síncrono mas não bloqueia a thread.await Promise.all([fetch1(), fetch2()]) é mais rápido que await sequencial.Callback hell está morto
Em 2026, callbacks aninhados são coisa do passado. Todo código moderno Node.js usa async/await. A maioria das APIs do Node.js core (fs, crypto, etc.) tem versões com promises nativas via fs/promises e util.promisify().
Primeiro Servidor com Express
Express é o framework web mais popular do Node.js. Minimalista e flexível, ele lida com routing, middleware e responses. Em 10 linhas de código você tem um servidor HTTP funcionando.
npm install express. Crie server.js, importe express, crie a app e defina uma rota GET na raiz que retorna JSON.app.get("/", (req, res) => res.json({ message: "API funcionando" })). Acesse http://localhost:3000 no browser.app.use(express.json()) para parsear body de requests POST/PUT automaticamente. Sem isso, req.body é undefined.npm install -D nodemon reinicia o servidor automaticamente quando você salva um arquivo. Adicione script "dev": "nodemon server.js".Módulos Nativos Essenciais
Node.js vem com módulos built-in que não precisam de instalação. Os mais usados no dia a dia:
fs/promises para a versão async: await readFile("data.json", "utf-8").path.join(__dirname, "data", "users.json") funciona em Windows e Linux.crypto.randomUUID().Node.js vs Deno vs Bun
Em 2026, três runtimes JavaScript competem pela atenção dos devs. Cada um tem vantagens, mas Node.js continua dominando o mercado.
Node.js
O padrão da indústria desde 2009
Prós
- 2M+ pacotes no npm
- 40.8% de adoção profissional
- Ecossistema maduro e estável
- Documentação e comunidade imbatíveis
Contras
- Startup mais lento que Bun
- Sem TypeScript nativo (precisa de tsc)
- Permissões de rede/filesystem abertas
Bun
Runtime ultra-rápido em Zig
Prós
- 4x mais rápido no startup
- TypeScript e JSX nativos
- Bundler e test runner inclusos
- Compatível com a maioria dos pacotes npm
Contras
- Ecossistema menor
- Menos testado em produção
- Bugs em pacotes complexos
- Windows suporte recente
Recomendação para iniciantes
Comece com Node.js. O ecossistema é incomparável, 99% dos tutoriais e vagas usam Node.js, e o conhecimento transfere diretamente para Bun ou Deno se quiser migrar depois. Aprender Node.js primeiro garante empregabilidade imediata.
Seu Primeiro Deploy
Colocar seu projeto no ar é mais simples do que parece. Plataformas modernas oferecem deploy gratuito via Git push.
"start" no package.json. Use process.env.PORT para a porta (plataformas definem automaticamente). Nunca hardcode 3000.curl https://sua-api.railway.app/. Se retornar JSON, seu backend está no ar.Roadmap de Evolução
Próximos passos após o básico
Conclusão
Node.js é a fundação do desenvolvimento JavaScript moderno. Com ele, você constrói APIs, aplicações real-time, ferramentas CLI e microsserviços com a mesma linguagem do frontend. O próximo passo é criar sua primeira API REST completa com autenticação e banco de dados.