0% acharam este documento útil (0 voto)
22 visualizações

Desenvolvimento de Sistemas Com JavaScript

Direitos autorais
© © All Rights Reserved
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
22 visualizações

Desenvolvimento de Sistemas Com JavaScript

Direitos autorais
© © All Rights Reserved
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 35

Introdução ao Desenvolvimento de Sistemas com

JavaScript
JavaScript é uma das linguagens mais populares e versáteis da atualidade. Ele é
utilizado para construir desde sites interativos até aplicativos complexos e sistemas
backend. Vamos explorar conceitos fundamentais e, em seguida, montar um plano de
30 dias para que você se torne um especialista em desenvolvimento com JavaScript.

Conceitos Importantes

1. Sintaxe Básica e Fundamentos


Entenda variáveis, tipos de dados, operadores, loops e funções. Esses são os
blocos de construção do JavaScript.

Exemplo:

let name = "João";


console.log(`Olá, ${name}!`);

2. DOM (Document Object Model)


Permite manipular elementos HTML e criar interatividade em páginas web.

Exemplo:

document.getElementById("botao").addEventListener("click", function() {

alert("Botão clicado!");

});

3. Eventos e Manipulação
Trabalhe com cliques, teclado, mouse, e outros eventos.

4. Programação Assíncrona (Promises e Async/Await)


Essencial para operações como buscar dados de uma API.

Exemplo:

fetch('https://api.example.com/data')

.then(response => response.json())

.then(data => console.log(data))

.catch(error => console.error(error));

5. ES6+ (Modern JavaScript)


Inclui funcionalidades como classes, arrow functions e destruturação.

Exemplo:

const [a, b] = [1, 2];

console.log(a, b); // 1 2
6. Desenvolvimento Backend com Node.js
Use JavaScript para construir servidores e APIs.

7. Frameworks Frontend (React, Vue, Angular)


Escolha frameworks para criar interfaces ricas e dinâmicas.

8. Testes Automatizados
Garanta que seu código funcione conforme esperado usando testes.

9. Gerenciamento de Estado (Redux, Context API)


Essencial em aplicações maiores para gerenciar dados compartilhados.

Plano de 30 Dias: Desenvolvimento com JavaScript

Estrutura

 Semana 1: Fundamentos de JavaScript

 Semana 2: Interatividade e DOM

 Semana 3: Programação Assíncrona e Backend com Node.js

 Semana 4: Projeto Final e Frameworks Frontend

Semana 1: Fundamentos do JavaScript

Dia 1: Sintaxe Básica

Objetivo: Entender variáveis, operadores e funções.

 Crie um programa que calcule o dobro de um número.

 Estude let, const, if-else, for e while.

Dia 2: Arrays e Objetos

Objetivo: Trabalhar com coleções de dados.

 Crie uma lista de tarefas e adicione/remova itens dinamicamente.

Exemplo:

let tasks = ["Comprar pão", "Estudar JavaScript"];

tasks.push("Fazer exercícios");

console.log(tasks);

Dia 3: Funções e Escopos

Objetivo: Escreva funções e entenda o escopo.

 Crie uma função que retorna o nome completo de uma pessoa.


Exemplo:

function nomeCompleto(nome, sobrenome) {

return `${nome} ${sobrenome}`;

console.log(nomeCompleto("João", "Silva"));

Dia 4: Arrow Functions e ES6

Objetivo: Trabalhe com funções modernas.

 Reescreva funções com a sintaxe de arrow functions.

Exemplo:

const somar = (a, b) => a + b;

console.log(somar(3, 4)); // 7

Dia 5: Classes e Prototipagem

Objetivo: Crie classes e entenda herança.

 Crie uma classe Carro e instancie objetos.

Exemplo:

class Carro {

constructor(marca, modelo) {

this.marca = marca;

this.modelo = modelo;

detalhes() {

return `${this.marca} ${this.modelo}`;

let carro = new Carro("Toyota", "Corolla");

console.log(carro.detalhes());

Dia 6: Manipulação de Strings e Datas

Objetivo: Use métodos para trabalhar com strings e datas.

 Formate datas para "DD/MM/AAAA".


Dia 7: Mini-Projeto: Calculadora

 Construa uma calculadora simples que permita ao usuário realizar operações


básicas.

Esse é o plano inicial para a primeira semana. Caso queira, posso detalhar as semanas
seguintes, indo desde a manipulação do DOM até a construção do projeto final. O que
acha?

4o

Você disse:

Seguindo sua indicação gere material de estudos com explicação, exemplos e desafios
práticos para a primeira semana de estudos, relativo aos fundamentos de JavaScript.

O ChatGPT disse:

ChatGPT

Semana 1: Fundamentos de JavaScript

Nesta semana, você aprenderá os fundamentos do JavaScript. Vamos abordar


conceitos como variáveis, funções, estruturas de controle e manipulação de dados.

Dia 1: Sintaxe Básica e Operadores

Explicação

O JavaScript é uma linguagem de programação de fácil aprendizado. Ele usa variáveis,


operadores e estruturas de controle para realizar cálculos e lógicas simples.

Conceitos-Chave:

1. Variáveis: Declaradas com var, let ou const.

o let e const são preferidos por serem mais seguros.

let nome = "João";

const idade = 30;

2. Tipos de Dados: Incluem string, number, boolean, array, object, etc.

let ativo = true; // booleano

let preco = 19.99; // número

3. Operadores: Para cálculos (+, -, *, /) e comparações (===, !==, >, <).

let resultado = 10 + 5; // 15
Exemplo

let a = 10;

let b = 5;

console.log(`A soma de ${a} e ${b} é ${a + b}`); // A soma de 10 e 5 é 15

Desafio do Dia

1. Crie variáveis para armazenar seu nome, idade e cidade.

2. Faça um programa que calcule a soma de dois números e exiba o resultado.

Dia 2: Arrays e Objetos

Explicação

 Arrays: Armazenam listas de itens.

let frutas = ["Maçã", "Banana", "Laranja"];

console.log(frutas[0]); // Maçã

 Objetos: Estruturas que armazenam dados com chave e valor.

let pessoa = { nome: "João", idade: 25 };

console.log(pessoa.nome); // João

Exemplo

let livros = ["JS para Iniciantes", "HTML5 e CSS3"];

livros.push("Node.js Essentials");

console.log(livros); // Adiciona um livro à lista

Desafio do Dia

1. Crie um array com 5 filmes favoritos.

2. Crie um objeto para armazenar informações sobre você (nome, idade, hobby
favorito) e exiba os valores.

Dia 3: Funções

Explicação

Funções ajudam a organizar o código, tornando-o mais reutilizável.

1. Declaração de Funções

function saudacao(nome) {

return `Olá, ${nome}!`;

}
console.log(saudacao("Maria")); // Olá, Maria!

2. Parâmetros e Retornos

function soma(a, b) {

return a + b;

console.log(soma(3, 7)); // 10

Desafio do Dia

1. Crie uma função que receba dois números como parâmetros e retorne a soma.

2. Faça uma função que exiba "Bom dia, [nome]" onde o nome é passado como
argumento.

Dia 4: Condicionais e Loops

Explicação

 Condicionais (if/else): Executam diferentes códigos com base em condições.

let idade = 20;

if (idade >= 18) {

console.log("Maior de idade");

} else {

console.log("Menor de idade");

 Loops (for/while): Repetem um bloco de código.

for (let i = 0; i < 5; i++) {

console.log(i); // 0, 1, 2, 3, 4

Desafio do Dia

1. Crie um programa que verifique se uma pessoa é maior ou menor de idade.

2. Faça um loop que exiba os números de 1 a 10 no console.

Dia 5: Arrow Functions e ES6

Explicação

1. Arrow Functions: Uma maneira mais curta de declarar funções.


const somar = (a, b) => a + b;

console.log(somar(2, 3)); // 5

2. Template Literals: Concatene strings usando crases `` e ${}.

const nome = "Carlos";

console.log(`Bem-vindo, ${nome}!`);

3. Destructuring: Extraia valores de arrays ou objetos.

const [x, y] = [10, 20];

console.log(x, y); // 10 20

Desafio do Dia

1. Reescreva uma função usando arrow functions.

2. Use destructuring para obter o primeiro item de um array de frutas.

Dia 6: Manipulação de Strings e Datas

Explicação

 Métodos de Strings

let texto = "JavaScript é incrível!";

console.log(texto.toUpperCase()); // JAVASCRIPT É INCRÍVEL!

 Manipulação de Datas

let hoje = new Date();

console.log(hoje.toLocaleDateString()); // Exibe a data atual

Desafio do Dia

1. Crie um programa que converta uma frase para maiúsculas e minúsculas.

2. Exiba a data atual formatada no estilo "DD/MM/AAAA".

Dia 7: Mini-Projeto: Calculadora

Objetivo

Construa uma calculadora que:

1. Aceite dois números e uma operação (+, -, *, /).

2. Exiba o resultado no console.

Exemplo

function calculadora(a, b, operacao) {

switch (operacao) {
case "+":

return a + b;

case "-":

return a - b;

case "*":

return a * b;

case "/":

return a / b;

default:

return "Operação inválida";

console.log(calculadora(5, 3, "+")); // 8

Desafio do Dia

Implemente a calculadora acima e permita que o usuário insira os valores e a


operação.
Semana 2: Interatividade e Manipulação do DOM

Na segunda semana, você aprenderá a criar páginas interativas utilizando JavaScript


para manipular o DOM (Document Object Model). O DOM permite acessar e
modificar elementos HTML e CSS dinamicamente.

Dia 8: Introdução ao DOM

Explicação

O DOM é uma representação estruturada da página web. Com ele, você pode acessar
elementos HTML e manipulá-los.

1. Selecionando Elementos

o getElementById: Seleciona um elemento pelo ID.

o querySelector: Seleciona um elemento com seletor CSS.

Exemplo:

let titulo = document.getElementById("titulo");

let paragrafo = document.querySelector(".descricao");

2. Alterando Conteúdo

o Use innerHTML ou textContent para modificar textos ou HTML.

titulo.textContent = "Novo Título!";

Exemplo

html

<h1 id="titulo">Bem-vindo!</h1>

<script>

document.getElementById("titulo").textContent = "Olá, Mundo!";

</script>

Desafio do Dia

1. Crie um HTML com um título e um parágrafo. Use JavaScript para alterar o texto
de ambos.

2. Adicione um elemento com ID meuBotao e use JavaScript para alterá-lo.

Dia 9: Eventos no DOM

Explicação

Eventos são ações como cliques, movimentos de mouse ou teclas pressionadas.

1. Adicionando Eventos
o Use addEventListener para vincular uma função a um evento.

let botao = document.querySelector("#botao");

botao.addEventListener("click", function () {

alert("Botão clicado!");

});

2. Tipos Comuns de Eventos

o click: Disparado ao clicar.

o mouseover: Disparado ao passar o mouse.

o keyup: Disparado ao soltar uma tecla.

Exemplo

html

<button id="meuBotao">Clique Aqui</button>

<script>

document.getElementById("meuBotao").addEventListener("click", () => {

alert("Você clicou!");

});

</script>

Desafio do Dia

1. Adicione um botão à página que exibe uma mensagem de alerta ao ser clicado.

2. Crie um evento que altera o texto de um parágrafo ao passar o mouse sobre ele.

Dia 10: Alterando Estilos com JavaScript

Explicação

Você pode alterar estilos de elementos dinamicamente usando a propriedade style.

1. Alterando Propriedades de CSS

o Altere estilos como color, backgroundColor, fontSize, etc.

let titulo = document.querySelector("h1");

titulo.style.color = "blue";

titulo.style.fontSize = "24px";

2. Classes CSS Dinâmicas

o Adicione ou remova classes com classList.

titulo.classList.add("ativo");
titulo.classList.remove("inativo");

Exemplo

html

<h1 id="titulo">Texto Estilizado</h1>

<button id="botao">Mudar Cor</button>

<script>

let titulo = document.getElementById("titulo");

document.getElementById("botao").addEventListener("click", () => {

titulo.style.color = "red";

});

</script>

Desafio do Dia

1. Crie um botão que altere a cor de fundo de um elemento ao ser clicado.

2. Adicione e remova uma classe CSS de um elemento ao clicar em outro botão.

Dia 11: Criando e Removendo Elementos no DOM

Explicação

Você pode criar e remover elementos HTML dinamicamente usando JavaScript.

1. Criar Elementos

o Use createElement e appendChild para adicionar novos elementos.

let novoParagrafo = document.createElement("p");

novoParagrafo.textContent = "Este é um novo parágrafo.";

document.body.appendChild(novoParagrafo);

2. Remover Elementos

o Use removeChild ou remove para excluir elementos.

let titulo = document.querySelector("#titulo");

titulo.remove();

Exemplo

html
<button id="adicionar">Adicionar Parágrafo</button>

<script>

document.getElementById("adicionar").addEventListener("click", () => {

let paragrafo = document.createElement("p");

paragrafo.textContent = "Novo conteúdo adicionado!";

document.body.appendChild(paragrafo);

});

</script>

Desafio do Dia

1. Crie um botão que adicione um novo parágrafo à página.

2. Crie outro botão que remova um elemento existente.

Dia 12: Navegando no DOM

Explicação

O DOM permite acessar elementos relacionados como pais, filhos e irmãos.

1. Propriedades Principais

o parentElement: Retorna o pai de um elemento.

o children: Retorna uma coleção de filhos.

o nextElementSibling: Retorna o próximo irmão.

Exemplo:

let lista = document.querySelector("ul");

console.log(lista.children[0]); // Primeiro item da lista

2. Iterando sobre Elementos

let itens = lista.children;

for (let item of itens) {

console.log(item.textContent);

Desafio do Dia

1. Exiba no console todos os itens de uma lista HTML.

2. Alterne o estilo de cada item da lista para cores diferentes (exemplo: alternar
entre azul e vermelho).
Dia 13: Validação Simples de Formulários

Explicação

Você pode validar dados do usuário com JavaScript antes de enviá-los.

1. Obtendo Valores

o Use value para acessar o texto digitado em um campo.

let nome = document.getElementById("nome").value;

2. Verificando Dados

o Valide se o campo está vazio antes de enviar.

if (nome === "") {

alert("O campo nome é obrigatório!");

Exemplo

html

<form id="meuForm">

<input id="nome" type="text" placeholder="Digite seu nome">

<button type="submit">Enviar</button>

</form>

<script>

document.getElementById("meuForm").addEventListener("submit", (event)
=> {

event.preventDefault();

let nome = document.getElementById("nome").value;

if (nome === "") {

alert("Preencha o nome!");

} else {

alert(`Olá, ${nome}!`);

});

</script>

Desafio do Dia
1. Crie um formulário com um campo de texto e botão de envio. Exiba um alerta se
o campo estiver vazio.

2. Valide que um campo de email tenha "@" no texto digitado.

Dia 14: Mini-Projeto: Lista de Tarefas

Objetivo

Crie uma lista de tarefas interativa onde o usuário possa:

1. Adicionar novas tarefas.

2. Remover tarefas existentes.

3. Marcar tarefas como concluídas.

Exemplo

html

<ul id="tarefas"></ul>

<input id="novaTarefa" type="text" placeholder="Digite uma nova tarefa">

<button id="adicionarTarefa">Adicionar</button>

<script>

let lista = document.getElementById("tarefas");

document.getElementById("adicionarTarefa").addEventListener("click", () => {

let novaTarefa = document.getElementById("novaTarefa").value;

if (novaTarefa.trim() !== "") {

let item = document.createElement("li");

item.textContent = novaTarefa;

item.addEventListener("click", () => item.classList.toggle("concluida"));

lista.appendChild(item);

});

</script>

<style>

.concluida {

text-decoration: line-through;

color: gray;

}
</style>

Desafio do Dia

Implemente a lista de tarefas e permita que o usuário remova itens ao clicar em um


botão de exclusão ao lado da tarefa.
Semana 3: Programação Assíncrona e Backend com Node.js

Na terceira semana, você aprenderá a trabalhar com programação assíncrona em


JavaScript e terá seu primeiro contato com Node.js, uma plataforma de execução de
JavaScript no lado do servidor.

Dia 15: Introdução à Programação Assíncrona

Explicação

A programação assíncrona permite executar tarefas que podem demorar (como


carregar dados da internet) sem bloquear o restante do programa.

1. Callback: Uma função passada como argumento para outra função.

function saudacao(nome, callback) {

console.log(`Olá, ${nome}`);

callback();

saudacao("João", () => {

console.log("Bem-vindo!");

});

2. Promises: Representam um valor que pode estar disponível agora, no futuro ou


nunca.

let promessa = new Promise((resolve, reject) => {

let sucesso = true;

if (sucesso) resolve("Tudo certo!");

else reject("Algo deu errado.");

});

promessa

.then((resposta) => console.log(resposta))

.catch((erro) => console.error(erro));

Desafio do Dia

1. Crie uma função que receba um callback para exibir uma mensagem após uma
saudação.

2. Implemente uma promise que simule um carregamento com sucesso ou erro.


Dia 16: Async/Await

Explicação

Async/Await é uma forma mais simples de lidar com operações assíncronas.

1. Funções async e await


Uma função async sempre retorna uma promise. Dentro dela, você pode usar
await para esperar que uma promise seja resolvida.

async function carregarDados() {

let dados = await fetch("https://jsonplaceholder.typicode.com/posts");

let json = await dados.json();

console.log(json);

carregarDados();

2. Tratamento de Erros com Try/Catch

async function carregarDados() {

try {

let dados = await fetch("https://jsonplaceholder.typicode.com/posts");

let json = await dados.json();

console.log(json);

} catch (erro) {

console.error("Erro ao carregar dados:", erro);

Desafio do Dia

1. Crie uma função assíncrona que simule uma API de consulta de dados.

2. Use fetch para obter dados de uma API pública e exibi-los no console.

Dia 17: Introdução ao Node.js

Explicação
O Node.js permite executar JavaScript fora do navegador. É amplamente utilizado
para backend.

1. Instalação e Primeiros Passos

o Instale o Node.js: https://nodejs.org/

o Verifique a instalação:

bash

Copiar código

node -v

2. Primeiro Programa com Node.js

o Crie um arquivo app.js e execute com node app.js.

javascript

Copiar código

console.log("Olá, Node.js!");

3. Módulo fs para Manipular Arquivos

const fs = require("fs");

fs.writeFileSync("mensagem.txt", "Olá, Mundo!");

console.log("Arquivo criado.");

Desafio do Dia

1. Crie um programa no Node.js que exiba "Bem-vindo ao Node.js".

2. Use o módulo fs para criar um arquivo com uma mensagem.

Dia 18: Criando um Servidor HTTP com Node.js

Explicação

Com Node.js, você pode criar um servidor HTTP básico.

1. Módulo http

const http = require("http");

const servidor = http.createServer((req, res) => {

res.writeHead(200, { "Content-Type": "text/plain" });

res.end("Bem-vindo ao meu servidor Node.js!");

});
servidor.listen(3000, () => {

console.log("Servidor rodando em http://localhost:3000");

});

2. Resposta com HTML

res.writeHead(200, { "Content-Type": "text/html" });

res.end("<h1>Meu Servidor Node.js</h1>");

Desafio do Dia

1. Crie um servidor HTTP básico que exiba "Olá, Mundo!".

2. Modifique o servidor para exibir uma página HTML simples.

Dia 19: Trabalhando com o NPM

Explicação

O NPM (Node Package Manager) gerencia pacotes de bibliotecas para projetos


Node.js.

1. Iniciando um Projeto

bash

npm init -y

2. Instalando Pacotes

o Use npm install <nome-do-pacote> para instalar pacotes.

bash

npm install express

3. Utilizando Pacotes

const express = require("express");

const app = express();

app.get("/", (req, res) => {

res.send("Olá, Express!");

});

app.listen(3000, () => {

console.log("Servidor rodando em http://localhost:3000");

});
Desafio do Dia

1. Inicie um projeto Node.js com NPM.

2. Instale o pacote chalk e use-o para exibir mensagens coloridas no console.

Dia 20: Criando uma API REST com Node.js

Explicação

Uma API REST permite que aplicações se comuniquem entre si.

1. Criando Rotas com Express

const express = require("express");

const app = express();

app.use(express.json());

app.get("/api", (req, res) => {

res.json({ mensagem: "Bem-vindo à API!" });

});

app.listen(3000, () => console.log("API rodando em http://localhost:3000/api"));

2. Rotas de CRUD

o GET: Obter dados.

o POST: Criar novos dados.

o PUT: Atualizar dados.

o DELETE: Remover dados.

Desafio do Dia

1. Crie uma API com uma rota /api que retorne uma mensagem JSON.

2. Adicione uma rota para adicionar e listar itens de uma lista.

Dia 21: Mini-Projeto: Gerenciador de Tarefas com Node.js

Objetivo

Crie uma API para gerenciar tarefas com as seguintes funcionalidades:


1. Listar tarefas: Retorna todas as tarefas.

2. Adicionar tarefa: Adiciona uma nova tarefa.

3. Remover tarefa: Remove uma tarefa pelo ID.

Exemplo

const express = require("express");

const app = express();

app.use(express.json());

let tarefas = [];

app.get("/tarefas", (req, res) => res.json(tarefas));

app.post("/tarefas", (req, res) => {

const { titulo } = req.body;

const novaTarefa = { id: Date.now(), titulo };

tarefas.push(novaTarefa);

res.status(201).json(novaTarefa);

});

app.delete("/tarefas/:id", (req, res) => {

tarefas = tarefas.filter(tarefa => tarefa.id !== parseInt(req.params.id));

res.status(204).end();

});

app.listen(3000, () => console.log("API rodando em


http://localhost:3000"));

Desafio do Dia

Implemente a API acima e teste todas as rotas com ferramentas como Postman ou
Insomnia.

Semana 4: Projeto Final e Introdução a Frameworks Frontend


Na última semana, você consolidará os conhecimentos adquiridos em JavaScript e
aprenderá os fundamentos de frameworks frontend modernos, com foco no React.js. O
objetivo é criar um Projeto Final utilizando JavaScript no frontend e backend.

Dia 22: Introdução a Frameworks Frontend e React.js

Explicação

Frameworks como React.js facilitam a criação de interfaces dinâmicas e reutilizáveis. O


React é baseado em componentes, que são blocos independentes de UI.

1. Conceitos Básicos

o Componentes: Funções ou classes que retornam HTML.

o JSX: Uma sintaxe que mistura HTML e JavaScript.

function Saudacao() {

return <h1>Olá, Mundo!</h1>;

2. Instalando React

o Use create-react-app para iniciar um projeto.

bash

npx create-react-app meu-projeto

cd meu-projeto

npm start

3. Estrutura Básica

o O React utiliza um único arquivo HTML (normalmente public/index.html) e


renderiza componentes nele.

Desafio do Dia

1. Instale o React e crie um projeto básico.

2. Crie um componente Saudacao que exiba uma mensagem de boas-vindas.

Dia 23: Componentes e Propriedades no React

Explicação
Propriedades (props) são parâmetros passados para componentes para torná-los
dinâmicos.

1. Componente com Props

function Saudacao(props) {

return <h1>Olá, {props.nome}!</h1>;

2. Passando Props

<Saudacao nome="João" />

3. Componentes Aninhados

function App() {

return (

<div>

<Saudacao nome="Maria" />

<Saudacao nome="Pedro" />

</div>

);

Desafio do Dia

1. Crie um componente Usuario que receba nome e idade como props e exiba-os.

2. Renderize múltiplos componentes Usuario com diferentes dados.

Dia 24: Estado e Eventos no React

Explicação
Estado (state) é uma forma de armazenar dados que podem mudar ao longo do
tempo em um componente.

1. Usando useState

import { useState } from "react";

function Contador() {

const [contador, setContador] = useState(0);

return (

<div>

<p>Contador: {contador}</p>

<button onClick={() => setContador(contador +


1)}>Incrementar</button>

</div>

);

2. Eventos

o Adicione eventos como onClick, onChange e outros para interatividade.

Desafio do Dia

1. Crie um componente Contador que incremente e decremente um número.

2. Crie um componente Input que atualize o texto exibido enquanto o usuário


digita.

Dia 25: React e APIs

Explicação

No React, você pode usar fetch ou bibliotecas como Axios para consumir APIs e exibir
dados.

1. Consumindo uma API com Fetch

import { useEffect, useState } from "react";

function App() {

const [posts, setPosts] = useState([]);


useEffect(() => {

fetch("https://jsonplaceholder.typicode.com/posts")

.then((res) => res.json())

.then((data) => setPosts(data));

}, []);

return (

<ul>

{posts.map((post) => (

<li key={post.id}>{post.title}</li>

))}

</ul>

);

Desafio do Dia

1. Consuma a API https://jsonplaceholder.typicode.com/posts e exiba os títulos dos


posts.

2. Adicione um botão que atualize os dados da API.

Dia 26: Planejamento do Projeto Final

Explicação

O projeto final será uma aplicação To-Do List com frontend React e backend Node.js.
Ela terá as seguintes funcionalidades:

1. Adicionar tarefas.

2. Listar tarefas.

3. Remover tarefas.

Estrutura:

 Frontend: React para interface e consumo de API.

 Backend: Node.js para gerenciar tarefas.

Desafio do Dia

1. Estruture o projeto criando pastas para o frontend e backend.

2. Inicie o backend com uma API de tarefas (como visto na semana 3).
Dia 27: Criando o Frontend do Projeto

Explicação

Implemente a interface do To-Do List com React.

1. Estrutura do Componente

o Um componente principal para gerenciar a lista de tarefas.

import { useState } from "react";

function App() {

const [tarefas, setTarefas] = useState([]);

const [novaTarefa, setNovaTarefa] = useState("");

const adicionarTarefa = () => {

setTarefas([...tarefas, novaTarefa]);

setNovaTarefa("");

};

return (

<div>

<input

type="text"

value={novaTarefa}

onChange={(e) => setNovaTarefa(e.target.value)}

/>

<button onClick={adicionarTarefa}>Adicionar</button>

<ul>

{tarefas.map((tarefa, index) => (

<li key={index}>{tarefa}</li>

))}

</ul>

</div>

);

}
export default App;

Desafio do Dia

1. Crie a interface do To-Do List com funcionalidades de adicionar tarefas.

2. Estilize a interface com CSS.

Dia 28: Integração Frontend e Backend

Explicação

Conecte o React ao backend Node.js para gerenciar as tarefas.

1. Consumindo a API

o Use fetch para carregar tarefas do backend.

useEffect(() => {

fetch("http://localhost:3000/tarefas")

.then((res) => res.json())

.then((data) => setTarefas(data));

}, []);

2. Adicionar e Remover Tarefas

o Faça requisições POST e DELETE para gerenciar tarefas.

Desafio do Dia

1. Integre o frontend com a API de backend para listar tarefas.

2. Adicione funcionalidades de adicionar e remover tarefas usando a API.

Dia 29: Refinando e Testando o Projeto

Explicação

Revise o código, otimize e adicione validações ou melhorias visuais.

1. Validações

o Impeça o envio de tarefas vazias.

o Exiba mensagens de erro para operações inválidas.

2. Melhorias Visuais

o Use bibliotecas como Bootstrap ou Tailwind CSS para estilizar.

Desafio do Dia

1. Adicione validações para evitar tarefas duplicadas ou vazias.


2. Melhore a interface do usuário com animações simples.

Dia 30: Apresentação do Projeto

Explicação

Conclua e apresente o projeto.

1. Estrutura Final

o Certifique-se de que o backend e frontend estejam funcionando


corretamente.

o Documente o código com comentários explicativos.

2. Publicação

o Use serviços como Vercel (frontend) e Railway ou Render (backend)


para publicar seu projeto.

Desafio do Dia

1. Publique o projeto final em plataformas gratuitas.

2. Compartilhe seu trabalho com amigos ou em redes sociais para obter feedback.
Material de Estudos: Utilização de APIs, Funções e Objetos em JavaScript

Neste material, vamos abordar os conceitos fundamentais sobre APIs, funções e


objetos no JavaScript, essenciais para construir aplicações modernas e interativas.

Parte 1: Utilizando APIs em JavaScript

Uma API (Application Programming Interface) é um conjunto de regras que


permite a interação entre sistemas. No contexto de JavaScript, usamos APIs para obter
ou enviar dados a servidores.

Conceitos Fundamentais

1. Fetch API: Usada para fazer requisições HTTP.

fetch("https://jsonplaceholder.typicode.com/posts")

.then(response => response.json())

.then(data => console.log(data))

.catch(error => console.error("Erro:", error));

2. Métodos HTTP:

o GET: Recupera dados.

o POST: Envia dados.

o PUT/PATCH: Atualiza dados.

o DELETE: Remove dados.

3. Requisições Assíncronas:

o Async/Await facilita o trabalho com promessas.

async function carregarPosts() {

try {

const response = await


fetch("https://jsonplaceholder.typicode.com/posts");

const data = await response.json();

console.log(data);

} catch (error) {

console.error("Erro:", error);

carregarPosts();
Exemplo Prático: Consumindo uma API Pública

Crie uma página HTML que exiba uma lista de posts obtidos de uma API.

html

Copiar código

<!DOCTYPE html>

<html lang="pt-BR">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Posts da API</title>

</head>

<body>

<h1>Posts da API</h1>

<ul id="posts"></ul>

<script>

async function carregarPosts() {

const response = await fetch("https://jsonplaceholder.typicode.com/posts");

const posts = await response.json();

const lista = document.getElementById("posts");

posts.slice(0, 5).forEach(post => {

const item = document.createElement("li");

item.textContent = `${post.title}: ${post.body}`;

lista.appendChild(item);

});

carregarPosts();

</script>

</body>

</html>

Desafio Prático
1. Altere o exemplo acima para exibir apenas os 5 primeiros posts.

2. Adicione um botão que recarregue os dados da API.

Parte 2: Funções em JavaScript

Conceitos Fundamentais

1. Declaração de Função:

function saudacao(nome) {

return `Olá, ${nome}!`;

console.log(saudacao("João"));

2. Funções Anônimas e Arrow Functions:

const soma = (a, b) => a + b;

console.log(soma(2, 3));

3. Funções de Alta Ordem:


Aceitam outras funções como argumentos ou retornam funções.

javascript

Copiar código

const calcular = (a, b, operacao) => operacao(a, b);

const multiplicar = (a, b) => a * b;

console.log(calcular(4, 5, multiplicar)); // 20

4. Parâmetros Opcionais e Valores Padrão:

javascript

Copiar código

function cumprimentar(nome = "Visitante") {

console.log(`Bem-vindo, ${nome}!`);

cumprimentar(); // Bem-vindo, Visitante!


Exemplo Prático: Funções Dinâmicas

Crie uma função que permita calcular diferentes operações matemáticas.

javascript

Copiar código

function calcular(a, b, operacao) {

switch (operacao) {

case "soma":

return a + b;

case "subtracao":

return a - b;

case "multiplicacao":

return a * b;

case "divisao":

return a / b;

default:

return "Operação inválida";

console.log(calcular(10, 5, "soma")); // 15

console.log(calcular(10, 5, "divisao")); // 2

Desafio Prático

1. Implemente a função calcular acima com arrow functions.

2. Adicione tratamento para valores inválidos (ex.: divisões por zero).

Parte 3: Objetos em JavaScript

Conceitos Fundamentais

1. Criação de Objetos:

javascript

Copiar código

const pessoa = {

nome: "Ana",

idade: 25,
falar: function() {

return `Olá, meu nome é ${this.nome}`;

};

console.log(pessoa.falar());

2. Acessando Propriedades:

o Notação de ponto: pessoa.nome

o Notação de colchetes: pessoa["idade"]

3. Métodos e this:

o Métodos são funções dentro de objetos.

o this refere-se ao próprio objeto.

4. Iteração sobre Objetos:

javascript

Copiar código

const carro = { marca: "Ford", modelo: "Fiesta", ano: 2020 };

for (const chave in carro) {

console.log(`${chave}: ${carro[chave]}`);

5. Desestruturação de Objetos:

javascript

Copiar código

const { nome, idade } = pessoa;

console.log(nome, idade);

Exemplo Prático: Gerenciando Tarefas com Objetos

Crie uma lista de tarefas usando objetos.

javascript

Copiar código

const tarefas = [

{ id: 1, descricao: "Estudar JavaScript", concluida: false },

{ id: 2, descricao: "Ler um livro", concluida: true },

];
tarefas.forEach(tarefa => {

console.log(`${tarefa.id}: ${tarefa.descricao} - ${tarefa.concluida ? "Feita" :


"Pendente"}`);

});

Desafio Prático

1. Adicione uma função para marcar uma tarefa como concluída.

2. Crie uma função para remover tarefas concluídas da lista.

Parte 4: Integração de APIs, Funções e Objetos

Combine os conhecimentos para consumir uma API e manipular os dados obtidos


como objetos.

Exemplo Prático

Crie uma página que exiba informações de usuários e permita marcar usuários como
"favoritos".

javascript

Copiar código

let usuariosFavoritos = [];

async function carregarUsuarios() {

const resposta = await fetch("https://jsonplaceholder.typicode.com/users");

const usuarios = await resposta.json();

usuarios.forEach(usuario => {

console.log(`${usuario.id}: ${usuario.name}`);

});

function adicionarFavorito(id, usuarios) {

const usuario = usuarios.find(u => u.id === id);

if (usuario) {

usuariosFavoritos.push(usuario);

console.log(`${usuario.name} adicionado aos favoritos.`);


}

carregarUsuarios();

Desafio Prático

1. Liste os usuários obtidos da API em uma tabela HTML.

2. Adicione botões para marcar/desmarcar usuários como favoritos.

Você também pode gostar