Hoje vamos aprender como fazer operações CRUD usando JavaScript e criar a parte lógica de um app de mídia social.
Vamos lá! 👨🏻💻
Partindo do básico: O que é CRUD?
CRUD é um tipo de mecanismo que permite criar dados, ler dados, editar e excluir esses dados.
- C: Criar um novo registro
 - R: Ler as informações de um registro
 - U: Atualizar os dados de um registro
 - D: Excluir um registro
 
Configuração Inicial do projeto
- Crie 3 arquivos chamados: index.html, style.css e main.js
 - Copiar os códigos do arquivo html & css que subi neste repositório "x.github.com"
 
Para o tutorial não ficar muito extenso, vou explicar somente a parte lógica da aplicação ou seja o JavaScript.
Este é o fluxograma do nosso projeto 👇
Se você não entendeu, não tem problema, vai ficar mais fácil ao decorrer da leitura desse artigo.
Agora que conhecemos o fluxograma, vamos lá...
Validação do Formulário
Primeiro, precisamos criar as variáveis no JS puxando os elementos do HTML pelos seus respectivos ID's.
Dessa maneira: 👇
let form = document.getElementById("form");
let input = document.getElementById("input");
let msgErro = document.getElementById("msgErro");
let posts = document.getElementById("posts");
Depois, criamos um evento 'submit' para o form e com ele podemos previnir o comportamento padrão.
form.addEventListener("submit", (event) => {
  // Previnindo o comportamento padrão do formulário
  event.preventDefault();
  // Testando o clique no botão
  console.log("Botão clicado!");
  validarFormulario(); // Pré-definindo função
});
Na sequência, criamos uma função para validar o formulário.
let validarFormulario = () => {};
Agora, vamos criar declarações condicionais dentro de validarFormulario() para previnir os usuários de enviar com o valor do campo branco ou vazio.
let validarFormulario = () => {
  // Se o campo estiver vazio:
  if (input.value === "") {
    msgErro.innerHTML = "Preencha o campo!";
    console.log("Dados não foram aceitos.");
    // Dar foco no campo com erro é uma boa prática
    input.focus();
  // Se o campo não estiver vazio:
  } else {
    console.log("Dados aceitos.");
    msgErro.innerHTML = ""; // Limpando a msg de erro
  }
};
Agora como poderemos ver, uma mensagem de erro será mostrado se o usuário tentar enviar o formulário em branco.
Como aceitar os dados recebidos no campo de entrada
Quaisquer que sejam os dados que obtivermos dos campos de entrada, armazenaremos em um objeto dados.
Vamos criar este objeto e uma função chamada aceitarDados().
let dados = {};
let aceitarDados = () => {};
A ideia principal aqui é que, usando essa função coletamos os dados do input e armazenamos no nosso objeto dados.
let aceitarDados = () => {
  dados["Valor de Entrada"] = input.value;
  console.log(dados);
};
Também precisamos da função aceitarDados para funcionar quando o usuário clicar no botão enviar.
Para isso, nós vamos declarar a função na condicional else da nossa função validarFormulario(). 👇
let validarFormulario = () => {
  if (input.value === "") {
    // Outros códigos aqui
  } else {
    // Outros códigos aqui
    aceitarDados(); // Escrevendo aceitar dados
  }
};
Quando inserimos dados e enviamos o formulário, no console podemos ver um objeto contendo os valores de entrada do nosso usuário. Tipo assim: 👇
Como criar as postagens usando Template Strings
Para postar nossos dados de entrada na div posts, precisamos criar um elemento div e anexá-lo ao div posts. Primeiro, vamos criar uma função e escrever estas linhas: 👇
let criarPost = () => {
  posts.innerHTML += ``;
};
Os  são template strings.
O que escrevermos dentro dele funcionará como HTML.
Aqui, precisamos criar 3 coisas: um div pai, apresentar o valor da entrada no input e o div de opções que carregará os ícones de edição e exclusão.
Vamos em frente finalizar nossa função!
let criarPost = () => {
  posts.innerHTML += `
    <div>
        <p>${dados["Entrada de Texto"]}</p>
        <span class="options">
            <i onClick="editPost(this)" class="fas fa-edit"></i>
            <i onClick="deletePost(this)" class="fas fa-trash-alt"></i>
        </span>
    </div>
  `;
  // Depois de criar a postagem, limpamos o input
  input.value = "";
};
Na nossa função aceitarDados(), nós vamos declarar a função criarPost().
Assim: 👇
let aceitarDados = () => {
  // Outros códigos aqui
  criarPost();
};
O resultado até aqui deve estar parecido com isso:

Como deletar posts
Para excluir um post, primeiro precisamos criar uma função responsável por essa tarefa dentro do nosso arquivo javascript.
let deletarPost = (event) => {};
Em seguida, adicionar essa função deletarPost() dentro de todos os nossos ícones de exclusão usando o atributo onClick.
Você escreverá essas linhas em HTML e no template string. 👇
<i onClick="deletePost(this)" class="fas fa-trash-alt"></i>
A palavra this vai fazer referência ao elemento que acionou o evento.
Nesse caso, fará referência ao botão de delete.
Muita atenção agora no HTML, o parent do botão delete é o span com a classe opções.
Então, vamos escrever parentElement duas vezes para pularmos do ícone com a função delete até a div onde aparece a tarefa para remove-lá por completo.
let deletarPost = (event) => {
  event.parentElement.parentElement.remove();
};
E agora você também pode deletar os posts que adicionou: 👇

Como editar os posts
Para editar um post, primeiro precisamos criar a respectiva função dentro do nosso arquivo JavaScript.
let editarPost = (event) => {};
Em seguida, adicionar essa função editarPost() dentro de todos os nossos ícones de edição usando o atributo onClick.
Você escreverá essas linhas em HTML e no template string:
<i onClick="editPost(this)" class="fas fa-edit"></i>
A palavra this vai fazer referência ao elemento que acionou o evento.
Nesse caso, fará referência ao botão de edição.
Muita atenção agora no HTML, o parent do botão delete é o span com a classe opções.
Então, vamos escrever parentElement duas vezes para pularmos do ícone com a função editar até a div onde aparece a tarefa.
Então, qualquer que seja os dados inseridos no post, nós traremos isso de volta ao input para editar.
let editarPost = (event) => {
  input.value = event.parentElement.previousElementSibling.innerHTML;
  event.parentElement.parentElement.remove();
};
E agora também podemos editar os posts já adicionados: 👇

Em uma entrevista geralmente essa task serviria para avaliar sua capacidade lógica, entendendo bem esse artigo você está dois passos a frente e conseguiria resolver o problema de uma maneira bem simples e completamente funcional.
Agora claro, você pode e deve recriar esse projeto sozinho em busca de entender todos os conceitos envolvidos na criação, melhorar o layout e até mesmo adicionar novas features ao seu aplicativo CRUD.
Espero que tenham gostado e evoluído seus conhecimentos com esse artigo! ✨



    
Top comments (0)