1 / 12
Modulo 6 / Back-End com Node.js

Introdução ao Node.js

JavaScript fora do navegador: npm, módulos e primeiros passos.

school Aula 26 schedule 2 horas

Conceito

O que é Node.js?

terminal JavaScript no servidor

  • Runtime de JavaScript fora do navegador
  • Construído sobre o motor V8 do Google Chrome
  • Permite criar servidores, APIs, scripts e ferramentas
  • Assíncrono e orientado a eventos
  • Usado por Netflix, LinkedIn, PayPal, Uber

compare_arrows JS no browser vs Node.js

DOM / HTML Browser ✓ Node ✗
window / document Browser ✓ Node ✗
Arquivos (fs) Browser ✗ Node ✓
Servidor HTTP Browser ✗ Node ✓
Banco de dados Browser ✗ Node ✓

Setup

Instalando o Node.js

desktop_windows

Windows

  1. Acesse nodejs.org
  2. Baixe a versão LTS
  3. Execute o instalador (.msi)
  4. Siga o assistente (Next, Next...)
laptop_mac

macOS

  1. Acesse nodejs.org
  2. Baixe a versão LTS (.pkg)
  3. Ou via Homebrew:
$ brew install node
terminal

Linux

# Ubuntu/Debian $ sudo apt update $ sudo apt install nodejs npm # Ou via nvm (recomendado) $ nvm install --lts

Verificando a instalação:

$ node --version # ex: v20.11.0 $ npm --version # ex: 10.2.4

Hello World

Primeiro programa

code app.js

// Meu primeiro programa Node.js const nome = "FATEC"; const ano = 2025; console.log(`Olá, ${nome}!`); console.log(`Ano: ${ano}`); // Funcionalidades do Node.js console.log("Diretório:", __dirname); console.log("Arquivo:", __filename); console.log("Processo:", process.version);

play_arrow Executando

$ node app.js Olá, FATEC! Ano: 2025 Diretório: /Users/aluno/projeto Arquivo: /Users/aluno/projeto/app.js Processo: v20.11.0
lightbulb O comando node arquivo.js executa qualquer arquivo JavaScript no terminal.
terminal Teste o REPL interativo: digite node sem argumentos para executar JS linha a linha.

Gerenciador de pacotes

O que é o npm?

inventory_2 Node Package Manager

  • Gerenciador de pacotes do Node.js
  • Maior registro de pacotes do mundo (+2 milhões)
  • Instala bibliotecas e ferramentas de terceiros
  • Gerencia versões e dependências
  • Já vem instalado com o Node.js

rocket_launch Iniciando um projeto

# Criar um novo projeto $ mkdir meu-projeto $ cd meu-projeto $ npm init -y # Isso cria o package.json: { "name": "meu-projeto", "version": "1.0.0", "main": "index.js", "scripts": { "start": "node index.js" } }

Pacotes

Instalando dependências

download Comandos npm

# Instalar um pacote $ npm install express # Instalar como dependência de dev $ npm install nodemon --save-dev # Instalar globalmente $ npm install -g vercel # Instalar todas as dependências # (após clonar um projeto) $ npm install # Desinstalar $ npm uninstall express

folder O que acontece

meu-projeto/
├── node_modules/ (pacotes baixados)
├── package.json (lista de dependências)
├── package-lock.json (versões exatas)
└── index.js (seu código)
warning NUNCA suba node_modules/ no Git! Adicione ao .gitignore.

Automação

Scripts do package.json

code Definindo scripts

{ "scripts": { "start": "node index.js", "dev": "nodemon index.js", "test": "echo \"Sem testes ainda\"" } }

play_arrow Executando scripts

# Executar o script "start" $ npm start # Executar o script "dev" $ npm run dev # Executar o script "test" $ npm test
lightbulb start e test nao precisam do run. Outros scripts sim (npm run dev).

Organização

Sistema de módulos

share CommonJS (padrão Node)

// utils.js — exportando function somar(a, b) { return a + b; } function saudacao(nome) { return `Olá, ${nome}!`; } module.exports = { somar, saudacao }; // app.js — importando const { somar, saudacao } = require('./utils'); console.log(somar(2, 3)); // 5 console.log(saudacao("Ana")); // Olá, Ana!

code ES Modules (moderno)

// utils.mjs — exportando export function somar(a, b) { return a + b; } export function saudacao(nome) { return `Olá, ${nome}!`; } // app.mjs — importando import { somar, saudacao } from './utils.mjs'; console.log(somar(2, 3)); console.log(saudacao("Ana"));
Para usar ES Modules, adicione "type": "module" no package.json ou use extensão .mjs.

Built-in

Módulos nativos

folder_open fs (File System)

const fs = require('fs'); // Ler um arquivo const conteudo = fs.readFileSync( 'dados.txt', 'utf-8' ); console.log(conteudo); // Escrever em um arquivo fs.writeFileSync( 'saida.txt', 'Olá, Node.js!' );

language http (Servidor)

const http = require('http'); const server = http.createServer( (req, res) => { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('<h1>Olá, Node!</h1>'); } ); server.listen(3000, () => { console.log('http://localhost:3000'); });
path caminhos de arquivo os info do sistema url parse de URLs crypto criptografia events eventos

Produtividade

Usando o Nodemon

refresh Reinício automático

  • Monitora alterações nos arquivos
  • Reinicia o servidor automaticamente a cada salvamento
  • Evita ficar fazendo Ctrl+C e node app.js manualmente
# Instalar $ npm install nodemon --save-dev # Usar $ npx nodemon app.js

settings Configurando no package.json

{ "scripts": { "start": "node index.js", "dev": "nodemon index.js" }, "devDependencies": { "nodemon": "^3.0.0" } }

Fluxo de desenvolvimento:

npm run dev edita código reinicia sozinho

Hora de praticar

Exercício prático

terminal Primeiros passos com Node.js

  1. Verifique se o Node.js está instalado (node --version)
  2. Crie uma pasta exercicio-node e inicialize com npm init -y
  3. Crie um arquivo utils.js com pelo menos 2 funções exportadas
  4. Crie um app.js que importa e usa as funções
  5. Use o módulo fs para salvar um resultado em um arquivo .txt
  6. Crie um servidor HTTP simples que responde com HTML
  7. Instale o nodemon e configure o script dev
lightbulb Desafio extra: crie um servidor que lê um arquivo JSON e retorna os dados como resposta HTTP.
Próxima aula

Aula 27

Express.js: rotas, middleware e arquitetura MVC.

task_alt O que aprendemos hoje

  • check_circle O que é Node.js e a diferença para o browser
  • check_circle Instalação e primeiro programa
  • check_circle npm: package.json, instalação de pacotes, scripts
  • check_circle Módulos: CommonJS vs ES Modules
  • check_circle Módulos nativos (fs, http) e Nodemon
Próxima aula
auto_stories Referência: Node.js Docs
Leandro Medeiros