image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Eliel Diniz
Eliel Diniz19/09/2024 19:43
Compartilhe

Bibliotecas Essenciais para Desenvolver com Node.js

  • #Node.js
  • #Mongoose
  • #Express

Se você está começando com Node.js, provavelmente já se deparou com muitos termos técnicos e bibliotecas (libs) que parecem complicados. Mas calma! Vamos dar uma olhada em algumas das principais bibliotecas que você precisa conhecer de uma forma simples, como se estivéssemos conversando.

1. Express.js – O Básico para Criar um Servidor

O Express.js é provavelmente a primeira biblioteca que você vai ouvir falar. Ele é como o coração de uma aplicação web no Node.js, sendo responsável por criar servidores e definir rotas.

Imagine que você tem uma loja e precisa organizar os pedidos que chegam. O Express é o sistema que vai ajudar você a lidar com cada pedido e responder rapidamente. Ele faz com que seu site ou aplicativo consiga responder a requisições, como abrir uma página ou enviar um formulário.

Por que usar?

- Simples de usar e entender.

- Organiza o código de forma limpa.

- É muito popular e bem documentado.

Exemplo prático: Criação de um servidor básico que responde "Hello World" quando acessamos a página principal.

javascript
Copiar código
const express = require('express');
const app = express();

app.get('/', (req, res) => {
res.send('Hello World!');
});

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

Como testar:

Após rodar o código (node index.js), acesse o endereço http://localhost:3000 no navegador e você verá a mensagem "Hello World!".

Documentação oficial do Express.js:

https://expressjs.com/

Lá você encontrará guias, exemplos e uma explicação detalhada sobre cada funcionalidade do Express.

2. Mongoose – Para Lidar com o Banco de Dados

Agora, se o seu projeto precisa guardar dados, como informações de usuários ou produtos, você provavelmente vai usar um banco de dados. Mongoose é a biblioteca que ajuda você a conectar o Node.js a um banco de dados MongoDB (um banco de dados não-relacional).

Pense no Mongoose como um tradutor que facilita a comunicação entre o seu código em Node.js e o banco de dados, tornando tudo mais rápido e seguro.

Por que usar?

- Simplifica as operações com dados.

- Facilita a criação de esquemas (estruturas de dados).

- Oferece várias funções prontas para salvar, buscar e atualizar dados.

Mongoose – Para Lidar com o Banco de Dados

Exemplo prático: Conexão ao MongoDB e criação de um novo usuário no banco de dados.

javascript
Copiar código
const mongoose = require('mongoose');

// Conectar ao MongoDB
mongoose.connect('mongodb://localhost/meubanco', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('Conectado ao MongoDB!'))
.catch(err => console.log('Erro ao conectar:', err));

// Definir um esquema (estrutura) de usuário
const Usuario = mongoose.model('Usuario', new mongoose.Schema({
nome: String,
email: String
}));

// Criar um novo usuário
const novoUsuario = new Usuario({ nome: 'João', email: 'joao@example.com' });
novoUsuario.save().then(() => console.log('Usuário salvo!'));

Como testar:

Rode o código e, se estiver com o MongoDB configurado, ele criará um novo documento com o nome e e-mail do usuário no banco de dados.

Documentação oficial do Mongoose:

https://mongoosejs.com/

No site oficial do Mongoose, você encontrará tutoriais sobre como configurar conexões com MongoDB, definir esquemas e realizar operações de CRUD (Create, Read, Update, Delete).

3. jsonwebtoken – Autenticação Simples

Segurança é algo fundamental em qualquer aplicação, e uma das formas de proteger o acesso é através da autenticação. Uma biblioteca muito usada para isso é a jsonwebtoken(ou JWT).

Ela permite criar um token (um código especial) que garante que só usuários autenticados possam acessar certas partes do seu site ou aplicativo. É como dar uma chave para uma pessoa que tem permissão para abrir uma porta.

Por que usar?

- Simples de integrar com o Express.

- Muito utilizada para autenticação em APIs.

- Facilita o controle de permissões.

Exemplo prático: Criação de um token JWT e sua verificação.

javascript
Copiar código
const jwt = require('jsonwebtoken');

// Criar um token para o usuário
const token = jwt.sign({ id: 123, nome: 'João' }, 'segredo', { expiresIn: '1h' });
console.log('Token:', token);

// Verificar o token
jwt.verify(token, 'segredo', (err, decoded) => {
if (err) {
  console.log('Token inválido');
} else {
  console.log('Dados decodificados:', decoded);
}
});

Como testar:

Execute o código e veja o token gerado. Você pode usá-lo para autenticação em diferentes rotas, verificando sua validade com jwt.verify().

Documentação oficial do JSON Web Token:

https://jwt.io/

O site JWT.io oferece uma documentação completa sobre como criar, verificar e validar tokens JWT. Além disso, você pode testar e decodificar tokens diretamente na página principal.

4. Nodemon – Para Facilitar a Vida Durante o Desenvolvimento

Quando estamos desenvolvendo uma aplicação, é normal cometer erros e precisar atualizar o servidor várias vezes. O Nodemon é uma ferramenta que reinicia automaticamente seu servidor sempre que você faz alguma mudança no código.

Pense nele como um assistente que fica de olho no seu trabalho e reinicia a máquina sempre que necessário, para que você não precise fazer isso manualmente.

Por que usar?

- Economiza tempo.

- Facilita o desenvolvimento ao evitar reinicializações manuais.

- Simples e eficiente.

Nodemon – Para Facilitar a Vida Durante o Desenvolvimento

Exemplo prático: Instale o Nodemon globalmente (npm install -g nodemon) e utilize-o para rodar o seu servidor Node.js.

bash
Copiar código
nodemon app.js

Sempre que fizer alterações no arquivo app.js, o Nodemon reiniciará o servidor automaticamente.

Como testar:

Faça uma mudança no código (por exemplo, mude o texto do console.log) e salve. O Nodemon reiniciará o servidor sem que você precise fazer isso manualmente.

Documentação oficial do Nodemon:

https://nodemon.io/

O site fornece informações sobre a instalação, configuração e uso do Nodemon, além de explicar suas opções de personalização.

5. Axios – Para Fazer Requisições HTTP

Se você precisa buscar informações de outros sites ou APIs, como dados do clima ou uma lista de produtos, o Axios é a biblioteca ideal para fazer isso. Ele faz requisições HTTP de forma simples e organizada.

Imagine que você quer perguntar algo a outro site e receber uma resposta rápida. O Axios cuida dessa comunicação para você.

Por que usar?

- Fácil de usar e entender.

- Promete resultados rápidos e organizados.

- Funciona tanto no Node.js quanto no frontend (navegadores).

Exemplo prático: Fazendo uma requisição para a API pública do GitHub e buscando informações de um usuário.

javascript
Copiar código
const axios = require('axios');

axios.get('https://api.github.com/users/octocat')
.then(response => {
  console.log('Dados do usuário:', response.data);
})
.catch(error => {
  console.log('Erro na requisição:', error);
});

Como testar:

Rode o código e você verá no terminal as informações do usuário "octocat" no GitHub, como o nome, o número de repositórios, etc.

Repositório oficial no GitHub e documentação do Axios:

https://axios-http.com/

A documentação cobre desde como fazer requisições básicas até como configurar interceptores e gerenciar erros.

6. bcryptjs – Para Criptografar Senhas

Guardar senhas de forma segura é crucial, e para isso usamos a biblioteca bcryptjs. Ela permite criptografar senhas, tornando-as mais seguras para serem armazenadas no banco de dados.

É como se você guardasse uma senha em um cofre super seguro, que só pode ser aberto com uma chave especial (o algoritmo do bcrypt).

Por que usar?

- É essencial para a segurança dos usuários.

- Fácil de implementar.

- Muito usada em conjunto com a autenticação JWT.

bcryptjs – Para Criptografar Senhas

Exemplo prático: Criptografando uma senha e verificando sua validade.

javascript
Copiar código
const bcrypt = require('bcryptjs');

// Criptografar uma senha
const senha = 'senha123';
bcrypt.hash(senha, 10, (err, hash) => {
if (err) throw err;
console.log('Senha criptografada:', hash);

// Verificar a senha
bcrypt.compare(senha, hash, (err, res) => {
  if (res) {
    console.log('Senha correta!');
  } else {
    console.log('Senha incorreta!');
  }
});
});

Como testar:

Execute o código e veja a senha criptografada no terminal. Em seguida, o código fará uma comparação para validar se a senha fornecida bate com a senha criptografada.

Repositório oficial do bcrypt.js no GitHub:

https://github.com/dcodeIO/bcrypt.js/

Este link traz exemplos práticos de como usar o bcrypt para criptografar e comparar senhas, além de outras opções avançadas de uso.

Essas são algumas das principais bibliotecas que todo iniciante em Node.js deve conhecer. Elas formam a base de muitas aplicações modernas, e quanto mais você praticar, mais confortável ficará com elas.

Dica de ouro: Não tenha pressa! Teste cada biblioteca em pequenos projetos, experimente e brinque com o código. É assim que você vai aprender de verdade.

Compartilhe
Comentários (6)
Anderson Souza
Anderson Souza - 20/09/2024 17:25

Post muito completo e bem escrito! As bibliotecas apresentadas são fundamentais para qualquer projeto Node.js. Uma sugestão seria abordar também o Sequelize, que é outra ORM popular para trabalhar com bancos de dados relacionais. Além disso, seria interessante explorar um pouco mais sobre as diferenças entre o Mongoose e o Sequelize, para ajudar os desenvolvedores a escolher a ferramenta mais adequada para cada projeto.

VM

Vanderlei Moretto - 20/09/2024 12:26

Muito bem feito post, mas há algumas ressalvas:

- mongoose não é essencial, até porque a maioria dos sistemas feitos em NodeJS usam PostgreSQL

- nodemon não é mais necessário; node -watch faz isso nativamente e com algumas vantagens

- axios também não é essencial - a API nativa fetch() faz isso tão fácil quanto o axios, e com vantagens

No restante, podemos dizer sim, que são libs essenciais

NG

Nei Gomes - 20/09/2024 10:38

Excelente conteúdo, parabens!!!

Edian Gomes
Edian Gomes - 20/09/2024 03:45

Gostei! Muito didático 👏👏

ML

Matheus Lúcio - 19/09/2024 20:35

Muito bacana as dicas!

Wellington Oliveira
Wellington Oliveira - 19/09/2024 20:06

Muito bom conteúdo.