NodeJS

📚 Conteúdo Educacional

Domine NodeJS - Iniciante

Fundamentos do Node.js

O que é Node.js?

Node.js é um ambiente de execução JavaScript baseado no motor V8 do Chrome. Ele permite rodar JavaScript no servidor, possibilitando o desenvolvimento de aplicações escaláveis ​​e de alto desempenho. Node.js é conhecido por seu modelo assíncrono e orientado a eventos, o que o torna ideal para aplicações em tempo real, como APIs, chats e streaming. Além disso, conta com o npm (Node Package Manager), que facilita a instalação e gerenciamento de bibliotecas e módulos.


Iniciando um Projeto

// Inicializar npm npm init -y // Estrutura básica ├── node_modules/ ├── package.json └── index.js

Módulos Principais

HTTP Module

const http = require('http');

const server = http.createServer((req, res) => {
res.writeHead(200);
res.end('Olá Mundo!');
});

server.listen(3000);

File System (fs)

const fs = require('fs');

// Ler arquivo
fs.readFile('arquivo.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});

Gerenciamento de Pacotes

// package.json
{
"scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js"
},
"dependencies": {
    "express": "^4.18.2"
}
}
Comandos Úteis:
  • Gerenciamento de Projetos

    • npm init -y - Inicia novo projeto Node.js
    • npm install - Instala todas as dependências
    • npm install <pacote> --save - Instala e salva como dependência
    • npm install -g <pacote> - Instala globalmente
  • Execução e Desenvolvimento

    • node app.js - Executa arquivo JavaScript
    • npm run start - Executa script definido
    • nodemon app.js - Recarregamento automático
    • node --inspect app.js - Modo debugging
  • Dependências e Segurança

    • npm update - Atualiza todos os pacotes
    • npm outdated - Verifica desatualizados
    • npm audit - Verifica vulnerabilidades
    • npm audit fix - Corrige vulnerabilidades
  • Utilitários Avançados

    • npx create-react-app my-app - Executa pacote sem instalar
    • npm ci --only=production - Instala para produção
    • killall node - Para todos processos Node
    • NODE_ENV=production node app.js - Define ambiente
Dica: Use && para múltiplos comandos:
npm install && npm start

Criando API com Express

const express = require('express');
const app = express();

app.get('/', (req, res) => {
res.json({ mensagem: "API Funcionando!" });
});

app.listen(3000, () => {
console.log('Servidor rodando na porta 3000');
});

Configuração de Ambiente

.env

PORT=3000
DB_HOST=localhost
API_KEY=minha_chave_secreta

Uso no Código

require('dotenv').config();

const port = process.env.PORT;
console.log(`Porta: ${port}`);

Event Loop Architecture

Blocking I/O

const fs = require('fs');
const data = fs.readFileSync('file.txt'); // Bloqueante
console.log(data);

Non-blocking I/O

fs.readFile('file.txt', (err, data) => {
    if (err) throw err;
    console.log(data);
}); // Não bloqueante
Melhor prática: Sempre usar operações assíncronas para I/O

Streams e Buffer

const { Readable } = require('stream');

class MyReadable extends Readable {
    _read(size) {
        // Implementação da leitura
    }
}

const stream = new MyReadable();
stream.pipe(process.stdout);
  • Processamento de dados em tempo real
  • Baixo consumo de memória
  • Pipe para encadeamento de operações

Cluster Module

const cluster = require('cluster');
const os = require('os');

if (cluster.isMaster) {
    const numCPUs = os.cpus().length;
    for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
    }
} else {
    // Código do worker
}

Escalabilidade horizontal utilizando múltiplos processos

🎬 Playlist Nodejs

Curso desenvolvido por Victor Lima
Conteúdo produzido sobre Ciência da Computação
Plataforma oficial: Guia do Programador
Canal no YouTube: @GuiadoProgramador