Aula 2 - Slides - Edson Ifarraguirre Moreno
Aula 2 - Slides - Edson Ifarraguirre Moreno
Aula 2 - Slides - Edson Ifarraguirre Moreno
O que você
vai aprender
nessa aula
• Nenhum recurso específico
• Exploração de conceitos
• Exemplificações
Contexto
• Como as páginas web eram elaboradas
• Originalmente eram puramente HTML
• Objetivo era o compartilhamento de documentos entre pesquisadores
• Com a popularização
• Páginas foram estilizadas para melhorar a comunicação, empregando CSS
• Animação
• Com a entrada da Netscape propôs um recurso para dinamização das páginas, JS
• Apesar da evolução
• As páginas era naturalmente estáticas
• Ao acessar uma URL, um documento era retornado (literalmente um arquivo)
Contexto
• Como as páginas web eram elaboradas
• A sofisticação das páginas web levaram a exploração de novas propostas
• Uma proposta inicial foi CGI (Common Gateway Interface)
Nenhuma
Atualização de
atualização de
página inteira no
página no pedido
pedido ao servidor
ao servidor
(Request)
(Request)
Single Page Application
• Modelo web de página única
• Interação do usuário ocorre principalmente no lado do cliente
• A aplicação é executada no navegador
• Utiliza tecnologias como HTML, CSS e JavaScript
Nenhuma
Atualização de
atualização de
página inteira no
página no pedido
pedido ao servidor
ao servidor
(Request)
(Request)
Single Page Application
• SPA vs aplicação web tradicional
• Navegação entre partes da aplicação é feita de
forma assíncrona
• Gerenciamento de estados
• Muito utilizados para a criação/adequação da interface com o usuário
• Tudo não estético mostrado em seu aplicativo é, na verdade, dado.
• Vue.js:
• https://vuejs.org/v2/examples/index.html
• React:
• https://pt-br.reactjs.org/docs/create-a-new-react-app.html
Tecnologias habilitadoras
• Algumas tecnologias e frameworks
• Angular
• É um framework de JavaScript mantido pelo Google
• Framework é
• Recurso elaborado para abstrair várias etapas de construção de uma solução
• Normalmente apoiado em biblioteca de funções
• O site oficial do Angular inclui um tutorial passo a passo chamado Tour of Heroes
• Demonstra como criar uma aplicação SPA completa
Tecnologias habilitadoras
• Algumas tecnologias e frameworks
• Single Page Apps for GitHub Pages
• É um repositório no GitHub
• Inclui um exemplo de aplicação SPA
• Usa o React para criar uma interface de usuário para exibir dados do GitHub.
Tecnologias habilitadoras
• Algumas tecnologias e frameworks
• Vue.js
• É um framework popular para criar SPAs.
O que você
vai aprender
nessa aula
• Entendimento sobre a SPA
Resumo do
que vimos
até agora
• Nenhum recurso específico
• Exploração de conceitos
• Exemplificações
Conceitos
• React
• É uma biblioteca JavaScript
• Usada para criar interfaces com usuários
• Baseada em blocos reutilizáveis (componentes) vindas de partes menores e mais
simples.
• Desafio da biblioteca
• Melhorar atualização dos sites em resposta a eventos
• Eventos normalmente requerem atualizações no site
• Eventos que normalmente causam alguma atualização
• Entrada de um usuário
• Um novo dado vindo de outro fonte de dado
• Um site, base de dados ou sensor (e.g. GPS)
• Composição vs Herança
• React é declarativo
• React é Idiomático
Conceitos
• Filosofia da tecnologia
• Focado em componentes
• Biblioteca propicia a criação e composição de componentes para construir a UI
• Componentes elaborados como peças independentes
• Podem ser reusadas
• Podem passar dados entre eles
• Um componente
• Um simples botão
• Uma barra de navegação construída a partir de coleção de botões e dropdown
• Decisões do desenvolvedor
• Avaliar questões de estilização na elaboração do componente
• Deve explorar o princípio de responsabilidade única (SOLID)
• Sua existência deve ter uma tarefa específica a executar
Conceitos
• Filosofia da tecnologia function Button(props){
return(
• Composição vs Herança );
<button onClick={props.handleClick}>{props.label}</button>
function WelcomeDialog(props){
• Composição tem maior foco no reuso de return(
<Dialog message="Welcome to our app!" />
um componente sem especializá-lo )
}
• Sua funcionalidade pode ser ajustada a
partir da passagem de parâmetros
Conceitos
• Filosofia da tecnologia
• React é declarativo
• Abordagem Imperativa
• Maioria das linguagens é Imperativa • Pegue duas fatias de pão
• Coloque as fatias de pão lado a lado
• Escolha uma das fatias de pão
• Paradigma Imperativo • Sobre a fatia escolhida
• Descreve como algo tem de ser feito • Passe manteiga nela
• Coloque uma fatia de presunto nela
• Coloque uma fatia de queijo
• Paradigma Declarativo • Coloque a outra fatia de pão
• Coloque o resultado em um prato
• Descreve o que quer que seja feito
• Abordagem declarativa
• Um sanduíche de presunto e queijo num prato
Conceitos
• Filosofia da tecnologia
• React é Idiomático
• Ferramenta de transpilação
• Ferramenta de tradução entre linguagens
• Ferramenta de empacotamento
• Ferramenta de compactação de arquivos de projeto
Arquivo JSX
• Tipo de arquivo explorado em projetos React
• São opcionais, mas muito empregados import React from "react";
• Origem do nome
function Login(){
const handleSubmit = (e)=>{
e.preventDefault();
• Java XML console.log(`logging in ${e.target[0].value}`);
• Transpilador vs Compilador
• Transpilador
• Converte entre linguagens
“semelhantes”
• Compilador tradicional
• De código fonte
• Para linguagem de baixo nível
O Webpack
• Empacotador de módulos estáticos
• Processa os recursos do projeto
• Arquivos texto (html, css, js)
• Imagens
• Cria um gráfico de dependência
• Mapeia os módulos necessários
• Gera um ou mais pacotes (bundle)
Relação entre os recursos
React uma biblioteca JavaScript para criação de
interfaces de usuário (UI).
O que você
vai aprender
nessa aula
• Conceitos sobre SPA
Conceitos }
console.log(`logging in ${e.target[0].value}`);
// do something else here
return (
<form id="login-form" onSubmit={handleSubmit}>
<input
• JSX não é HTML type="email"
id="email"
• Vendo o código placeholder="E-Mail Address"/>
<input
type="password"
id="password"/>
• Conhecedores de HTML <button>Login</button>
</form>
• Reconherão a estrutura a ser entregue );
}
export default Login;
• Conhecedores de JavaScript
• Entenderão que o função resultara em é um erro
function App(){
return (
<h1>
{/* Todo: Make this header dynamic */}
Welcome to My Website
</h1>
)
}
export default App;
Sintaxe básica de JSX
• Retornando um resultado
• Componentes devem retornar uma única estrutura
Sintaxe básica de JSX
• Retornando um resultado
• Mais de um resultado não é válido na linguagem
Sintaxe básica de JSX
• Retornando um resultado
• Tags HTML são um bom mecanismo para unificar os elementos
• Pode-se usar o conceito de fragment do React
• Produz resultado equivalente
Sintaxe básica de JSX
• Resumindo
• Todo elemento descrito em JSX deve ser fechado
• Elaboração respeitas as regras de XML
• Comentários em JSX
• São escritos dentro de chaves
• Exemplo: {/* Comentário JSX aqui */}
O que você
vai aprender
nessa aula
• Conceitos sobre SPA
• Exploração de conceitos
• Condição
• Equivalente àquele usado com if
• Valor_se_verdade
• Entregue se a condição for verdadeira
• Valor_se_falso
• Entregue se a condição for falsa
Coleções
• Assunto recorrente em disciplinas de programação
• Define uma estrutura de dados
• Voltada para conjunto de dados
• Muitas vezes de tipos equivalentes (mas não necessariamente)
• Armazenar, manipular e organizar
• Em JavaScript
• Existem tipos nativos para tratar coleções
• Arrays
• Objetos
• Dicionários (mapas)
Coleções
• Em JavaScript
• Existem tipos nativos para tratar coleções
• Arrays
• Coleção ordenada de elementos
• Pode armazenar
• Qualquer tipo de dado, outros arrays, objetos
• Elementos acessados por índice numérico
• Podem ser adicionados ou removidos dinamicamente
• Alguns métodos disponíveis
• push e pop: Adiciona o remove elemento
• forEach: Percorre cada elemento
• Map: Transforma o elemento armazenado
• Filter: retorna nova lista com o resultado da filtragem
• Reduce: Usado para contagem, média, etc
Coleções
• Em JavaScript
• Existem tipos nativos para tratar coleções
• Objetos
• coleção não ordenada de pares chave-valor
• Para cada valor
• É associado a uma chave exclusiva
• Permite acessar e manipular o valor.
• São usados para representar
• Entidades com propriedades e comportamentos
• As propriedades
• podem ser adicionadas, modificadas ou removidas
dinamicamente
• O acesso a propriedades feito usando a notação de
ponto objeto.propriedade
Coleções
• Em JavaScript
• Existem tipos nativos para tratar coleções
• Dicionários (mapas)
• Coleção de elementos que permite armazenar pares chave-valor
• Tanto as chaves quanto os valores podem ser de qualquer tipo
• Ao contrário dos objetos
• Mapas mantêm a ordem de inserção dos elementos
• Permitem usar qualquer tipo de valor como chave
• Alguns métodos disponíveis
• set, get: Permite modificar e capturar dados
• Delete: Permite eliminar uma entrada
• Has: Permite avaliar se um recurso está na coleção
• forEach: Permite iterar sobre a coleção
Exploração de coleções com React
• Caso 1 – Explorando Array de strings com renderização condicional
Exploração de coleções com React
• Caso 2 – Explorando Array de inteiros com renderização condicional
Map
Exploração de coleções com React
• Caso 3 – Explorando Array de inteiros com renderização condicional
• Implementação equivalente a anterior, mas encadeando funções filter e map
Filter
Map
Exploração de coleções com React
• Caso 3 – Explorando Array de objetos com renderização condicional
• Explorando o comando &&
• Inclusão da flor só em caso de gênero feminino
O uso de diferentes comandos para renderização
condicional
O uso de coleções
Resumo do
que vimos
até agora
Análise e Desenvolvimento de Sistemas
• Desenvolvimento de sistemas front end
Aula 2 (parte 5)
• Exemplos de solução explorando recursos vistos
• Criação de projetos React
• Construção de código
Case
• Condução do caso 1
• Criando um sistema para apresentação de um card de uma pessoa
• Passos
• Elaboração de um objeto
• Elaboração da solução
• Estilização
Case
• Condução do caso 2
• Criando um sistema para apresentação de um card de pessoas
• Estender cada objeto para conter peso e altura
• Passos
• Elaboração de um array de objetos
• Elaboração da solução
• Indicar se a pessoa tem um risco dado pelo IMC
• Apresentar ícone de alerta
• Exemplos básicos de manipulação de
recursos em React JS
Resumo do
que vimos
até agora