Biblioteca Padrão do JavaScript (Node.js): visão geral completa
Node.js é um ambiente de execução JavaScript, construído no motor V8 do Google. Ao contrário do JavaScript do navegador, o Node.js oferece uma poderosa biblioteca padrão integrada que permite trabalhar com sistema de arquivos, rede, streams de dados, criptografia e muito mais. Neste artigo, examinaremos em detalhes os principais módulos da biblioteca padrão do Node.js que são essenciais para todo desenvolvedor.
1. Módulo fs (File System)
O módulo fs fornece uma API para interagir com o sistema de arquivos. Ele suporta operações síncronas e assíncronas.
- Leitura de arquivo:
const fs = require('fs');
// Leitura assíncronafs.readFile('example.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data);});
// Leitura síncronaconst data = fs.readFileSync('example.txt', 'utf8');console.log(data);- Escrita em arquivo:
const fs = require('fs');
fs.writeFile('output.txt', 'Olá, mundo!', (err) => { if (err) throw err; console.log('Arquivo salvo');});O módulo também suporta trabalho com diretórios, streams e permissões de acesso.
2. Módulo path (Trabalho com caminhos)
O módulo path simplifica as manipulações com caminhos de arquivos e garante compatibilidade entre plataformas.
const path = require('path');
const fullPath = '/users/docs/file.txt';console.log(path.dirname(fullPath)); // /users/docsconsole.log(path.basename(fullPath)); // file.txtconsole.log(path.extname(fullPath)); // .txt
// Montagem de caminhoconst newPath = path.join('/users', 'docs', 'file.txt');console.log(newPath); // /users/docs/file.txt3. Módulo http (Servidor e cliente HTTP)
Com o http, é possível criar servidores web e enviar requisições HTTP sem bibliotecas de terceiros.
- Servidor HTTP simples:
const http = require('http');
const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Olá do Node.js!');});
server.listen(3000, () => { console.log('Servidor iniciado na porta 3000');});- Requisição HTTP (cliente):
const http = require('http');
http.get('http://api.example.com/data', (res) => { let data = ''; res.on('data', chunk => data += chunk); res.on('end', () => console.log(data));});4. Módulo stream (Streams de dados)
Streams permitem processar grandes volumes de dados em partes, sem carregá-los completamente na memória. O Node.js suporta quatro tipos de streams: Readable, Writable, Duplex e Transform.
const fs = require('fs');const zlib = require('zlib');
// Leitura de arquivo, compressão e escritaconst readStream = fs.createReadStream('input.txt');const writeStream = fs.createWriteStream('output.txt.gz');const gzip = zlib.createGzip();
readStream.pipe(gzip).pipe(writeStream);5. Módulo crypto (Criptografia)
O módulo crypto fornece funcionalidades para hashing, criptografia e geração de números aleatórios.
const crypto = require('crypto');
// Hashing de senhaconst hash = crypto.createHash('sha256').update('myPassword123').digest('hex');console.log(hash);
// Geração de bytes aleatórioscrypto.randomBytes(16, (err, buffer) => { console.log(buffer.toString('hex'));});6. Módulo events (Eventos)
Muitos objetos no Node.js (por exemplo, streams, servidores) herdam de EventEmitter. Este módulo permite criar eventos personalizados.