Resumo 1°Unidade
Desenvolvimento Back-end
A disciplina Desenvolvimento BackEnd foca na criação de soluções modernas e escaláveis para a camada de servidor de aplicações web.
Integra o uso da biblioteca Vue.js para construção de componentes reutilizáveis e interfaces interativas.
Alinha o desenvolvimento frontend com práticas de UX antecipada, como:
Criação de wireframes.
Acessibilidade.
Usabilidade desde as etapas iniciais.
No backend:
Aborda desenvolvimento de APIs RESTful utilizando:
Node.js com o framework Express.
TypeScript.
Explora conceitos fundamentais, como:
Cabeçalhos HTTP.
Infraestrutura de linguagem comum.
Avanço no conteúdo:
Integração com bancos de dados NoSQL, especialmente o MongoDB.
Inclui práticas seguras de autenticação e login, focando em:
Proteção e validação dos dados dos usuários.
Ensina a consumir e integrar APIs externas, permitindo que os sistemas desenvolvidos se comuniquem com outros serviços e ampliem suas funcionalidades.
Conclusão:
O aluno é submetido a etapas práticas de checkpoint, validação e entrega de um projeto final de backend, consolidando o aprendizado com a implementação de um sistema funcional completo.
Material didático:
Protegido por direitos autorais da Universidade Veiga de Almeida e do Centro Universitário Jorge Amado.
Qualquer uso não autorizado, reprodução ou distribuição é proibido e sujeito a penalidades legais.
Todos os direitos reservados à UVA & Unijorge.
Objetivos
Ao final da disciplina, o aluno deverá ser capaz de:
Desenvolver componentes reutilizáveis com a biblioteca Vue.js, aplicando conceitos de UX antecipada na criação de interfaces interativas e funcionais.
Construir APIs RESTful utilizando Node.js com o framework Express e TypeScript:
Compreensão da estrutura de cabeçalhos HTTP.
Papel da infraestrutura de linguagem comum.
Implementar soluções de back-end integradas a bancos de dados NoSQL,
Incluindo autenticação e login de usuários,
Visando segurança e integridade dos dados.
Realizar integração de APIs externas e concluir entrega do back-end do projeto, com checkpoints de validação e testes de funcionamento das funcionalidades implementadas.
Conteúdo Programático
A disciplina está organizada em unidades:
Unidade 1 – Desenvolvimento com Vue.js e UX antecipada.
Unidade 2 – Criação de APIs com Node.js, Express e TypeScript.
Unidade 3 – Integração com Banco de Dados NoSQL e Autenticação.
Unidade 4 – Projeto de desenvolvimento de Backend.
Autoria
Igor Gonzalez Pimenta: Mestre em Ciência e Sistema da Computação pela Universidade Salvador – Unifacs.
Analista de Sistemas.
Professor da Universidade Jorge Amado – Unijorge.
Empreendedor e tech lead em desenvolvimento de software na parte de customizações da torre de varejos da TOTVS.
Desenvolvimento com Vue.js e UX antecipada
Importância:
Criação de interfaces modernas e eficientes:
Domínio técnico das ferramentas de desenvolvimento.
Abordagem centrada no usuário desde as fases iniciais do projeto.
Vue.js como biblioteca JavaScript progressiva e flexível, ideal para:
Construção de componentes reutilizáveis.
Aplicações dinâmicas.
Simplicidade e arquitetura baseada em componentes, facilitando:
Manutenção.
Escalabilidade dos projetos.
Integrado a UX antecipada, onde:
Práticas devem ser seguidas:
Criação de wireframes.
Definição de fluxos de interação.
Princípios de usabilidade e acessibilidade.
Objetivo:
Desenvolver componentes reutilizáveis usando Vue.js e conceitos de UX antecipada.
Conteúdo Programático - Desenvolvimento com Vue.js e UX antecipada
Unidade organizada pelos seguintes temas:
Tema 1 - Introdução ao Vue.js e criação de componentes.
Tema 2 - Componentes reutilizáveis e comunicação entre componentes.
Tema 3 - Aplicando UX antecipada no desenvolvimento de interfaces.
Exemplo de Aplicação do Vue.js
Cenário: Aplicação para pedidos em uma cafeteria.
Clientes montam pedidos personalizados pelo celular antes de chegarem ao balcão.
Requisitos de interface:
Simples, rápida e funcional em celulares.
Componentes reutilizáveis que podem ser criados:
Componente de seleção de bebida: opções incluir café, chá, suco.
Componente de personalização: opções para adicionar açúcar, escolher tamanho e tipo de leite.
Resumo do pedido: atualiza automaticamente.
Risco de confusão na interface:
Botões pequenos.
Opções escondidas.
Fluxo difícil de entender.
Importância da UX antecipada:
Desenho de wireframes a priori.
Consultar usuários (clientes da cafeteria) para definir:
Botões grandes e visíveis.
Fluxo linear e claro (escolha → personalize → confirme).
Sistema que indica preço em tempo real.
Resultado com Vue.js:
Implementação modular e eficiente.
UX antecipada garante sistema agradável e funcional.
Tema 1 - Introdução ao Vue.js e Criação de Componentes
Vue.js: biblioteca JavaScript criada por Evan You, focada em:
Criação de interfaces dinâmicas e reativas.
Construção de aplicações SPA (Single Page Applications).
Modularização de código em componentes reutilizáveis.
Estrutura de um Projeto Vue.js:
Exemplo de estrutura:
src/ ├── App.vue # Componente raiz ├── main.js # Ponto de entrada da aplicação ├── components/ # Componentes reutilizáveis │ └── MeuBotao.vue └── assets/ # Imagens, ícones, CSS etc.Arquivo
main.js: inicializado da seguinte forma:javascript import { createApp } from 'vue' import App from './App.vue' createApp(App).mount('#app')
O que é um Componente Vue?
Definição: um componente é uma unidade modular, independente e reutilizável da interface de uma aplicação.
Características:
Parte visual e funcional da tela, como botão, formulário, menu, card de produto.
Internamente contém:
Template: parte visual (HTML).
Script: lógica da aplicação (JS/TS).
Style: aparência (CSS).
Código Exemplo:
<template> <button @click="contarCliques"> Você clicou {{ contador }} vezes </button> </template> <script setup> import { ref } from 'vue' const contador = ref(0) function contarCliques() { contador.value++ } </script> <style scoped> button { background-color: #42b983; color: white; padding: 10px 20px; border-radius: 5px; border: none; cursor: pointer; } </style>
Detalhes do Componente
Template:
@click="contarCliques": evento que chama a funçãocontarCliquesao clicar no botão.{{ contador }}: interpolação Vue que exibe o valor da variável no HTML.
Script:
import { ref } from 'vue': importa função ref, usada para criar variáveis reativas.Reatividade: se valor muda, o DOM se atualiza.
const contador = ref(0): cria variável reativacontador, iniciando em 0.contador.value++: incrementa o valor do contador.Acesso ao valor com
.value.
Style:
Estilos aplicados apenas ao componente atual devido ao atributo
scoped.
Ciclo de Vida do Componente
O Vue possui um ciclo de vida, permitindo executar ações em diferentes momentos:
Montagem:
onMounted(): buscar dados, inicializar recursos.Atualização:
onUpdated(): reagir a mudanças no DOM.Desmontagem:
onUnmounted(): limpar timers, ouvintes de eventos.
Exemplo
onMounted:javascript ¨K45K
Tema 2 - Componentes Reutilizáveis e Comunicação Entre Componentes
Definição: um componente reutilizável é um trecho de interface que pode ser usado em diferentes partes da aplicação.
Exemplos práticos incluem um botão de "Adicionar ao Carrinho" em várias páginas, mas com produtos diferentes.
Modelagem de um Componente Reutilizável (
BotaoPadrao.vue):<template> <button :style="{ backgroundColor: cor }" @click="clicar"> {{ texto }} </button> </template> <script setup> defineProps({ texto: String, cor: String }) const emit = defineEmits(['clique']) function clicar() { emit('clique') } </script>Características do Código:
defineProps(): recebetextoecorcomo propriedades personalizáveis.emit('clique'): notifica o componente pai ao ser clicado.
Uso em um Componente Pai:
<template> <div> <BotaoPadrao texto="Salvar" cor="green" @clique="salvar" /> <BotaoPadrao texto="Cancelar" cor="red" @clique="cancelar" /> </div> </template> <script setup> import BotaoPadrao from './components/BotaoPadrao.vue' function salvar() { alert('Salvando...') } function cancelar() { alert('Cancelando...') } </script>Explicação:
Dois botões reutilizando o mesmo componente com textos e cores diferentes,
permitindo comportamentos diferentes.
Comunicação Entre Componentes
Métodos: props e emit.
Comunicação Pai → Filho (props):
<!-- Pai.vue -->
<template>
<Filho :mensagem="'Olá do componente pai!'" />
</template>
<!-- Filho.vue -->
<template>
<p>{{ mensagem }}</p>
</template>
<script setup>
defineProps({ mensagem: String })
</script>
Comunicação Filho → Pai (emit):
<!-- Filho.vue -->
<template>
<button @click="emitirMensagem">Clique</button>
</template>
<script setup>
const emit = defineEmits(['mensagem'])
function emitirMensagem() {
emit('mensagem', 'Olá, pai!')
}
</script>
<!-- Pai.vue -->
<template>
<Filho @mensagem="mostrarAlerta" />
</template>
<script setup>
import Filho from './Filho.vue'
function mostrarAlerta(msg) {
alert(msg)
}
</script>
Boas Práticas para Comunicação entre Componentes
Use props para passar dados e emit para eventos: Mantém a independência dos componentes.
Crie componentes pequenos e focados: Não misture muita lógica em um só componente.
Use nomes claros: Nomeie componentes e props que reflitam sua função (ex: BotaoPadrao.vue, CardProduto.vue).
Evite acoplamento: Não acesse variáveis do pai via
this.$parentpara manter o isolamento.
Tema 3 - Aplicando UX Antecipada no Desenvolvimento de Interfaces
Importância do UX:
UX (User Experience) antecipada: processo de considerar a experiência do usuário desde o começo do desenvolvimento, incluindo:
Entendimento do usuário.
Planejamento da interface.
Wireframes.
Foca em garantir que a aplicação seja útil e facilmente acessível.
Desenvolvimento de UX Antecipada (Etapas):
Definir o público-alvo.
Identificar dispositivos a serem usados.
Entender necessidades e problemas a serem resolvidos.
Wireframes ajudam a organizar elementos antes da codificação.
Exemplo de Código de Forma Simples:
<template> <form @submit.prevent="logar"> <label for="email">E-mail:</label> <input id="email" v-model="email" type="email" required /> <label for="senha">Senha:</label> <input id="senha" v-model="senha" type="password" required /> <button type="submit">Entrar</button> <p v-if="erro" class="erro">{{ erro }}</p> </form> </template> <script setup> import { ref } from 'vue' const email = ref('') const senha = ref('') const erro = ref('') function logar() { if (email.value === '' || senha.value === '') { erro.value = 'Por favor, preencha todos os campos.' return } erro.value = '' // Simulação de login alert('Login efetuado!') } </script> <style scoped> form { display: flex; flex-direction: column; gap: 10px; max-width: 300px; } .erro { color: red; } </style>Resultados:
UX antecipada assegura que a aplicação Vue.js não seja apenas funcional, mas também acessível e intuitiva,
entregando uma experiência superior ao usuário.
Encerramento
Resumo:
A criação de componentes com Vue.js permite organizar a interface em partes menores e reutilizáveis, facilitando manutenção e escalabilidade.
Um componente pode ser criado uma vez e utilizado várias vezes com diferentes props.
UX é fundamental, assegurando que interfaces sejam úteis e agradáveis.
A unidade ensinou a criar interfaces modernas com Vue.js aliando à UX antecipada desde o início do desenvolvimento.