Ponto de partida para desenvolvimento em NodeJS, integrando Express, Nodemon e dotenv para otimizar a produtividade e permitir que desenvolvedores foquem na lógica do aplicativo.
Encorajar boas práticas e fornecer uma base que promova a escalabilidade e manutenção, inspirando a criação de funcionalidades inovadoras e soluções para desafios complexos no ecossistema NodeJS.
- NodeJS
- NPM
- Express
- Nodemon
- Git
Para executar este projeto é necessário ter instalado:
- NodeJS
- NPM
- Criar o arquivo
package.json
com o comandonpm init -y
- Criar o arquivo
.gitignore
com o seguinte conteúdo:
node_modules
.env
- Vincular o projeto ao repositório no Github
- Instalar o Express, Nodemon e dotenv com o comando
npm install express nodemon dotenv
- Criação do arquivo
.env
com a variávelPORT=4000
- Criar a pasta
src
e o arquivoserver.js
dentro dela com o código abaixo:
import express from "express"; // O express serve para criar o servidor
import { config } from "dotenv"; // O dotenv serve para ler as variáveis de ambiente
config(); // Carrega as variáveis de ambiente
const port = process.env.PORT || 5000; // Pega a porta do arquivo .env ou usa a porta 5000
const app = express(); // Cria o servidor e armazena na variável app
app.use(express.json()); // Configura o servidor para receber requisições com o formato JSON
// Configura o servidor para responder a requisições na rota /
app.get("/", (req, res) => {
return res.status(200).send({ message: "Hello World!" });
});
// Inicia o servidor na porta configurada
app.listen(port, () =>
console.log(`⚡ Server started on http://localhost:${port}`)
);
- Adicionar o script
dev
no arquivopackage.json
com o comandonodemon src/server.js
- Adicionar a informação
"type": "module"
no arquivopackage.json
- Executar o comando
npm run dev
para iniciar o projeto
Após a execução dos passos acima, o projeto estará pronto para ser utilizado e você poderá avançar para a próxima etapa.
- Criar a pasta
models
e o arquivoAluno.js
dentro dela com o código abaixo:
class Aluno {
constructor(nome, idade, curso) {
this.id = this.gerarId();
this.nome = nome;
this.idade = idade;
this.curso = curso;
}
gerarId() {
return Math.floor(Math.random() * 1000);
}
}
export default Aluno;
- Criar a pasta
repositories
e o arquivoAlunoRepository.js
dentro dela com o código abaixo:
class AlunoRepository {
constructor() {
this.alunos = [];
}
cadastrar(aluno) {
this.alunos.push(aluno);
}
listar() {
return this.alunos;
}
buscarPorId(id) {
return this.alunos.find((aluno) => aluno.id === id);
}
alterar(id, nome, idade, curso) {
const aluno = this.buscarPorId(id);
if (aluno) {
aluno.nome = nome;
aluno.idade = idade;
aluno.curso = curso;
}
return aluno;
}
excluir(id) {
const aluno = this.buscarPorId(id);
if (aluno) {
this.alunos = this.alunos.filter((aluno) => aluno.id !== id);
}
}
}
export default AlunoRepository;
- Criar a pasta
controllers
e o arquivoaluno.controller.js
dentro dela com o código abaixo:
import AlunoRepository from "../repositories/AlunoRepository.js";
import Aluno from "../models/Aluno.js";
const alunoRepository = new AlunoRepository();
export const cadastrar(req, res) => {
const { nome, idade, curso } = req.body;
const aluno = new Aluno(nome, idade, curso);
alunoRepository.cadastrar(aluno);
return res.status(201).send(aluno);
}
export const listar(req, res) => {
const alunos = alunoRepository.listar();
return res.status(200).send(alunos);
}
export const buscarPorId(req, res) => {
const { id } = req.params;
const aluno = alunoRepository.buscarPorId(Number(id));
if (!aluno) {
return res.status(404).send({ message: "Aluno não encontrado!" });
}
return res.status(200).send(aluno);
}
export const alterar(req, res) => {
const { id } = req.params;
const { nome, idade, curso } = req.body;
const aluno = alunoRepository.alterar(Number(id), nome, idade, curso);
if (!aluno) {
return res.status(404).send({ message: "Aluno não encontrado!" });
}
return res.status(200).send(aluno);
}
export const excluir(req, res) => {
const { id } = req.params;
const aluno = alunoRepository.buscarPorId(Number(id));
if (!aluno) {
return res.status(404).send({ message: "Aluno não encontrado!" });
}
alunoRepository.excluir(Number(id));
return res.status(204).send(aluno);
}
- Criar a pasta
routes
e o arquivoalunos.router.js
dentro dela com o código abaixo:
import { Router } from "express"; // O Router serve para criar as rotas
import {
cadastrar,
listar,
buscarPorId,
alterar,
excluir,
} from "../controllers/aluno.controller.js"; // Importa os controllers
const alunosRouter = Router(); // Cria o roteador do express
// Configura o roteador para responder a requisições na rota /
alunosRouter.post("/", cadastrar);
alunosRouter.get("/", listar);
alunosRouter.get("/:id", buscarPorId);
alunosRouter.put("/:id", alterar);
alunosRouter.delete("/:id", excluir);
export default alunosRouter; // Exporta o roteador
- Criar o arquivo
index.router.js
dentro da pastaroutes
com o código abaixo:
import express from "express"; // O express serve para criar o servidor
import { Router } from "express"; // O Router serve para criar as rotas
import alunosRouter from "./alunos.router.js"; // Importa o roteador de alunos
const indexRouter = Router(); // Cria o roteador do express
// Configura o roteador para responder a requisições na rota /
indexRouter.get("/", (req, res) => {
return res.status(200).send({ message: "Servidor rodando! 🚀" });
});
// Configura o roteador para responder a requisições na rota /alunos
indexRouter.use("/alunos", alunosRouter);
export default indexRouter; // Exporta o roteador
- Alterar o arquivo
server.js
para o código abaixo:
import express from "express"; // O express serve para criar o servidor
import { config } from "dotenv"; // O dotenv serve para ler as variáveis de ambiente
import indexRouter from "./routes/index.router.js"; // Importa o roteador
config(); // Carrega as variáveis de ambiente
const port = process.env.PORT || 5000; // Pega a porta do arquivo .env ou usa a porta 5000
const app = express(); // Cria o servidor e armazena na variável app
app.use(express.json()); // Configura o servidor para receber requisições com o formato JSON
app.use(indexRouter); // Configura o servidor para usar o roteador
// Inicia o servidor na porta configurada
app.listen(port, () =>
console.log(`⚡ Server started on http://localhost:${port}`)
);
- Executar o comando
npm run dev
para iniciar o projeto
Para instalar o projeto, siga os passos abaixo:
- Clone o projeto para sua máquina
- Execute o comando
npm install
para instalar as dependências do projeto - Execute o comando
npm run dev
para iniciar o projeto