Escolar Documentos
Profissional Documentos
Cultura Documentos
Conteudista
Prof. Esp. Alexander Albuquerque Gobbato
Revisão Textual
Prof.ª M.ª Rosemary Toffoli
OBJETIVOS DA UNIDADE
• Entender que o HTML5 é uma linguagem para criação e publicação de
documentos para web;
Este arquivo PDF contém o mesmo conteúdo visto on-line. Sua dis-
ponibilização é para consulta off-line e possibilidade de impressão.
No entanto, recomendamos que acesse o conteúdo on-line para
melhor aproveitamento.
2
Introdução
Houve um grande avanço da versão do HTML 4.01 para o HTML5. Muitas valida-
ções e programações que teríamos que fazer utilizando uma linguagem de pro-
gramação foi incorporado aos elementos HTML, nesta Unidade iremos verificar
quais foram esses itens que utilizaremos e que vieram para facilitar nossas vidas.
Ambiente Cliente/Servidor
Pensando nos elementos básicos para fornecer informação através da Web,
temos:
• Cliente:
• HTML;
• CSS;
• Javascript;
• XML.
3
• Servidor:
• Banco de dados;
• JSP;
• ASP.NET.
O que é HTML?
A World Wide Web (Web) é uma rede de recursos e serviços de informação.
Ela serve-se de três mecanismos, de modo a fazer com que esses recursos este-
jam legivelmente disponíveis à audiência mais vasta possível:
• Hipertexto, para uma navegação mais fácil através dos referidos recur-
sos (ex.: HTML).
4
Exemplos de URIs
• Identificadores de fragmentos: h t t p : / / s o m e s i t e . c o m / h t m l / t o p . h t m
l#section_2
• Fazer uma ligação a uma folha de estilo ou script (ver os elementos LINK
e SCRIPT);
W3C
A World Wide Web Consortium (W3C) é o órgão responsável por recomendar
padrões de desenvolvimento para a internet. Por meio destes padrões se
pode classificar web sites de acordo com suas características técnicas, indo
além do visual e navegadores, de acordo com sua capacidade em atender
aos padrões definidos.
5
Para se publicar informação de distribuição global, é necessário utilizar-se uma
linguagem de compreensão universal, uma espécie de Língua de publicação
“Mãe”, a qual possa ser potencialmente usada e compreendida por todos os
computadores.
O HTML é a linguagem de publicação usada pela World Wide Web (do Inglês: Hyper
Text Markup Language).
Versões
A versão mais significativa para nossa realidade foi o HTML 4.01 que foi publica-
do como uma recomendação do W3C em 1999. Ele possui as mesmas versões
do HTML 4.0.
Figura 2 – HTML5
Fonte: Wikimedia Commons
6
Muitos comandos não são compatíveis com todos os Navegadores (isso se aplica
principalmente ao CSS3 que veremos mais para frente).
Motores de Renderização
É o mecanismo utilizado pelos navegadores para processar o código das páginas
web, os principais motores dos principais navegadores são:
• Gecko – Firefox;
Devemos sempre procurar deixar nossos códigos compatíveis com esses moto-
res para que possamos atingir o maior número possível de usuários.
As palavras chaves estão marcadas entre os símbolos < e > como <html>.
7
Regras HTML Tag
• Tags HTML consistem em comandos que aparecem entre colchetes an-
gulares (<>);
Exemplo:
Document Type
O elemento <!DOCTYPE> especifica o tipo de documento (DTD), como página de
uso restrito de HTML e CSS.
8
• HTML 4.01 Strict DTD – adheres CSS and HTML 4.01 standards: <!DOC-
TYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “ h t t p : / / w w w . w 3 . o r g
/TR/html4/strict.dtd” >
• HTML 4.01 Frameset DTD – adheres HTML 4.01 standards including de-
precated HTML elements and attributes and frames.
O DOCTYPE é a maneira de você dizer para qualquer navegador como ele deve
agir ao ler seu código HTML.
Porque cada browser tem um padrão próprio de renderizar o HTML sem DOCTYPE.
O Strict é o “melhor” uma vez que ao dizer para um browser renderizar com ele,
você está dizendo que seguirá rigorosamente os padrões.
O Transitional você diz ao Browser que seu código está em transição, não neces-
sariamente seguirá rigorosamente os padrões, mas não fará um “ninho de ratos”.
Documento Principal
O <html> é o elemento principal do documento HTML.
• <title></title> tags;
• <body></body> tags.
9
• BGCOLOR: define o valor da cor;
• Se a imagem for salva em outro lugar, você tem que digitar o ende-
reço completo que aponta para a imagem.
• LINK: permite que você especifique a cor em que hiperlinks de texto não
visitados;
Criação de Links
A tag <a> define um hiperlink que é usado para ligar uma página para outra.
Criação de Tabelas
A tag <table> define uma tabela em html. A tag <table> consiste em um elemento
<tr> para indicar a linha e um elemento <td> para indicar a célula.
10
Figura 5 – Estrutura HTML para criação de tabela
Fonte: Acervo do Conteudista
#ParaTodosVerem: a figura apresenta um código HTML que utiliza as tags <table>, <tr> e <td> para a criação
de uma tabela. Fim da Descrição.
Criação de Listas
• <ul> – lista não ordenada;
11
Criação de Campos Textos
A tag <input> especifica um campo de entrada onde o usuário pode inserir dados.
Os <input> geralmente são utilizados dentro de <form>.
Caracteres Especiais
HTML permite que caracteres especiais sejam representados por sequências de
escape, indicadas por três partes: um & inicial, um número ou cadeia de caracte-
res correspondente ao caractere desejado, e um ; final.
Quatro caracteres ASCII – <, >, e & têm significados especiais em HTML, e são
usados dentro de documentos seguindo a correspondência:
Quadro 1
Entidade Caracter
< <
> >
& &
Outras sequências de escape suportam caracteres ISO Latin1. Aqui está uma
Tabela com os caracteres mais utilizados em português:
12
Quadro 2
á á Á Á
ã ã Ã Ã
â â Â Â
à à À À
é é É É
ê ê Ê Ê
í í Í Í
ó ó Ó Ó
õ õ Õ Õ
ô ô Ô Ô
ú ú Ú Ú
ü ü Ü Ü
ç ç Ç Ç
13
Alguns Elementos Novos do
HTML
Section
Representa um documento genérico ou seção da aplicação. Pode ser usado em
conjunto com elementos <h1>, <h2>, <h3>, <h4>, <h5> e <h6> para indicar a es-
trutura do documento
Exemplo:
Article
Representa uma peça independente do conteúdo de um documento, como um
blog ou artigo de jornal.
14
Figura 9 – Estrutura HTML com uso da tag <article>
Fonte: Acervo do Conteudista
Aside
Representa uma parte do conteúdo que é pouco relacionado com o resto da
página.
Footer
Representa um rodapé de uma seção e pode conter informações sobre o autor,
direitos autorais etc.
15
Figura 11 – Estrutura HTML com uso da tag <footer>
Fonte: Acervo do Conteudista
Figure
Representa uma parte do conteúdo de fluxo autossuficiente.
16
MATERIAL COMPLEMENTAR
Livro
Apresentação da HTML5
SILVA, M. S. Apresentação da HTML5. In: SILVA, M. S. HTML5 – A
linguagem de marcação que revolucionou a web. 2. ed. São Paulo:
Novatec, 2019.
REFERÊNCIAS BIBLIOGRÁFICAS
SILVA, M. S. Construindo sites com CSS e (X)HTML: Sites controlados por folhas de
estilo em cascata. São Paulo: Novatec, 2010.
Conteudista
Prof. Me. Marco Antonio Sanches Anastacio
Revisão Textual
Prof.ª Dra. Selma Aparecida Cesarin
OBJETIVOS DA UNIDADE
• Entender as regras e a função do CSS na programação web;
Este arquivo PDF contém o mesmo conteúdo visto on-line. Sua dis-
ponibilização é para consulta off-line e possibilidade de impressão.
No entanto, recomendamos que acesse o conteúdo on-line para
melhor aproveitamento.
2
O Que é CSS?
A finalidade do HTML, desde sua criação, sempre foi lidar somente com a marca-
ção e a estruturação de conteúdo. Entretanto, quando abrimos nosso navegador,
vemos páginas atraentes e agradáveis, que extrapolam uma simples marcação
de tags HTML.
A partir da versão 4.0 do HTML, o World Wide Web Consortium (W3C) incorporou
o CSS (Cascading Style Sheet, ou Folha de Estilo em Cascatas), com a finalidade de
se encarregar de toda a apresentação visual de um site, alterar elementos como
fonte, cor e tamanho de textos, espaçamento entre blocos, enfim, todo o aspecto
estético de uma página web.
Sintaxe CSS
O CSS utiliza uma estrutura de sintaxe simples, na qual a regra é a unidade básica
de uma folha de estilo e é composta de duas partes principais: um seletor e uma
ou mais declarações, como apresentado na Figura 1.
3
Figura 1 – Regra CSS
#ParaTodosVerem: imagem que descreve a utilização de uma Regra CSS. Da esquerda para a direita, são
especificados o Seletor e as declarações. Na parte superior da imagem, há o título “Regra CSS”. A parte
inferior da imagem contém textos destacando a Propriedade e o valor de cada uma das declarações. O
seletor utilizado é o h1 e as declarações são “color: blue” e “font-size: 12px”. Fim da descrição.
Uma regra pode conter várias declarações separadas por ponto e vírgula. Veja o
exemplo a seguir:
Seletores Válidos
Os seletores são componentes HTML que desejamos modificar e estilizar, por
meio do uso do CSS. Dentre os vários existentes, o Quadro 1 apresenta três dos
principais seletores utilizados para criar estilos para um elemento do HTML.
4
Quadro 1 – Principais seletores CSS
p
Seleciona um elemento
Seletor de elemento Seleciona apenas
do HTML.
os elementos p
da página.
5
<html>
<head>
<style>
#main {
text-align: center;
color: red;
}
.cor {color: blue;}
p {font-size: 28px;}
/*Efeito de sombra no texto*/
h1{text-shadow: 5px 5px 5px #FF0000;}
/*Efeito quebra de linha*/
p {word-wrap:break-word;}
@import url(‘https://fonts.googleapis.com/css2?family=Shan-
tell’);
p{font-family: ‘Shantell Sans’, cursive;}
div{
transform: rotate(20deg);
}
</style>
</head>
<body>
<h1 id=”main”>Texto alinhado ao centro na cor vermelha</
h1>
<h2 class=”cor”>Texto alinhado à esquerda na cor azul</h2>
<p>Texto alinhado à esquerda no tamanho 28px</p>
</body>
</html>
Site
O CSS Validation Service é uma ferramenta in-
dispensável para verificar se o seu CSS é válido.
6
Vinculando Folhas de Estilo a
Documentos
Não basta que você defina uma regra CSS. É preciso informar ao documento
onde ela se encontra. As folhas de estilo podem ser utilizadas de três maneiras
diferentes:
• Estilo externo;
• Estilo interno;
• Estilo inline.
O estilo externo é ideal quando a formatação deve ser aplicada a várias páginas.
Com um arquivo externo, você pode alterar um formato e ele será aplicado auto-
maticamente em todo o projeto.
Um estilo externo pode ser escrito por qualquer editor e não deve conter nenhu-
ma tag HTML. O arquivo deve ser salvo com a extensão .css e pode ser vinculado
a um documento HTML usando o elemento link, que deve estar contido na da
seção head.
<head>
<link rel=”stylesheet” type=”text/css” href=”estilo.css”>
</head>
hr {color:sienna;}
p {margin-left:20px;}
body {background-image:url(“images/back40.gif”);}
7
O estilo interno é usado na própria página HTML, sendo definido na seção head
com o emprego do elemento style. As regras de estilo são definidas dentro das
tags <style></style>, como mostra o exemplo a seguir:
<head>
<style type=”text/css”>
hr {color:sienna;}
p {margin-left:20px;}
body {background-image:url(“images/back40.gif”);}
</style>
</head>
Estilizando Documentos
Como vimos no começo desta Unidade, as propriedades são utilizadas para de-
finir características que serão aplicadas aos elementos HTML. A seguir, veremos
algumas dessas propriedades e como elas alteram o layout de uma página web.
Background
As propriedades do background são usadas para definir uma cor ou uma imagem
de fundo e estão listadas a seguir:
8
• Background-color;
• Background-image;
• Background-repeat;
• Background-attachment;
• Background-position.
Por exemplo:
body {background-image:url(“paper.gif”);}
Importante
Ao se utilizar a background-image, recomenda-se utilizar uma
propriedade auxiliar, como a background-color, visto que pode
ocorrer alguma falha no carregamento da imagem.
9
• No-repeat: a imagem é inserida apenas uma vez no plano de fundo. Pode
ser utilizada de modo que a imagem não atrapalhe o texto, como o exem-
plo da Figura 2:
Nesse exemplo, a imagem de fundo é mostrada numa posição de modo que ela
não perturbe o texto. O código CSS utilizado é mostrado a seguir:
body {
background-image: url(“img_tree.png”);
background-repeat: no-repeat;
background-position: right top;
margin-right: 200px;
}
Perceba que, para obtermos o efeito desejado, foi necessário utilizar uma nova
propriedade, o background-position que indica a posição na qual a imagem de
fundo será inserida.
10
Alguns dos valores possíveis dessa propriedade são:
Fontes e Texto
Quando o desejamos formatar a exibição de textos, as propriedades CSS geral-
mente se enquadram em duas categorias:
Estilos de Fontes
• Font-family;
• Font-style;
• Font-size.
11
A propriedade font-style tem 3 valores:
• Italic: itálico;
p.normal {font-style:normal;}
p.italic {font-style:italic;}
p.oblique {font-style:oblique;}
Valor Absoluto
Valor Relativo
12
/*Tamanho absoluto*/
h1 {font-size:40px;}
h2 {font-size:30px;}
p {font-size:14px;}
/*Tamanho relativo*/
h1 {font-size:2.5em;} /* 40px/16=2.5em */
h2 {font-size:1.875em;} /* 30px/16=1.875em */
p {font-size:0.875em;} /* 14px/16=0.875em */
body {font-size:100%;}
h1 {font-size:2.5em;}
h2 {font-size:1.875em;}
p {font-size:0.875em;}
h1 {text-align:center;}
p.date {text-align:right;}
p.main {text-align:justify;}
13
a {text-decoration:none;}
h1 {text-decoration:overline;}
h2 {text-decoration:line-through;}
h3 {text-decoration:underline;}
h4 {text-decoration:blink;}
p.uppercase {text-transform:uppercase;}
p.lowercase {text-transform:lowercase;}
p.capitalize {text-transform:capitalize;}
p {text-indent:50px;}
Importante
Quando utilizamos a marcação p.main {text-align:justify;} esta-
mos justificando o texto do parágrafo (<p>) cuja classe é main.
14
A sintaxe resumida dessa propriedade é apresentada na Figura 3, a seguir.
A declaração da borda pode ser feita resumidamente, como visto na Figura 5, porém,
também é possível fazer a declaração individualmente de cada propriedade.
Ou
.main{
border-width: 5px;
border-style: solid;
border-color: red;
}
Margens e Espaçamentos
A propriedade margin permite adicionar ao redor do elemento um distanciamen-
to na parte externa. A margem não tem cor de fundo e é completamente trans-
parente. As margens superior, inferior, direita e esquerda podem ser alteradas
de forma independente, usando suas propriedades separadas:
15
• Margin-top: determina o espaçamento superior;
<html>
<head>
<title>CSS</title>
<style>
.box {
width: 400px;
border: 2px solid rgb(186, 184, 228);
}
.box p {
width: 250px;
margin: 0 auto;
}
</style>
</head>
<body>
<div class=”box”>
<p>Parágrafo centralizado dentro de um box de largu-
ra de 400px.
</p>
</div>
</body>
</html>
16
Observe, no exemplo, que, como queremos centralizar o parágrafo, a pro-
priedade margin: auto foi aplicada somente a esse elemento. Poderíamos
aplicar a mesma formatação ao box para centralizá-lo, como foi feito
anteriormente.
.box p {
width: 400px;
border: 2px solid rgb(186, 184, 228);
margin: 0 auto;
}
Importante
A propriedade margin pode desestruturar o layout da página
HTML, pois altera o posicionamento dos elementos. Portanto,
use-a com cuidado!
.box {
width: 250px;
margin: 0 auto;
padding: 20px;
}
17
A Figura 4 mostra a comparação entre a formatação do parágrafo antes e depois
da aplicação do padding de 20px ao parágrafo.
18
Figura 5 – Apresentação visual de um elemento de acordo com a formatação CSS
Fonte: Reprodução
#ParaTodosVerem: imagem ilustrativa de um elemento formatado com CSS. A Figura é composta por três
retângulos de tamanhos diferentes, sendo o maior transparente, com borda tracejada, o seguinte na cor
cinza com uma borda sólida na cor preta e, no centro, encontra-se o terceiro retângulo na cor azul com
o texto “Conteúdos” e, abaixo, “elemento HTML”. No retângulo do centro, há duas setas: uma horizontal,
indicando a largura do retângulo (width), e outra vertical, indicando a altura (height). No retângulo maior,
com bordas tracejadas, há a indicação de cada um dos lados, contendo os textos, em sentido horário: “right”,
“bottom”, “left” e “top”. Fim da descrição.
Módulos CSS3
A versão mais recente das folhas de estilo é o CSS3 que, diferentemente de suas
versões anteriores, foi desenvolvido em módulos que introduziram novos recur-
sos que mudaram amplamente a forma como as páginas web são vistas pelos
usuários.
19
Quadro 2 – Principais propriedades e compatibilidade com navegadores
Importante
Na Tabela 1, os números seguidos por -webkit-, -moz- ou -o-
especificam a primeira versão que funcionou com um prefixo.
20
A seguir, temos o código utilizado para o box com borda declarada:
.comBorda {
border: 2px solid #991e1e;
padding: 10px 40px;
background: #ecebeb;
width: 300px;
border-radius: 25px;
-moz-border-radius: 25px;
}
.sombra {
border: 1px solid;
padding: 10px;
box-shadow: 5px 10px 8px #888888;
}
21
Veja o exemplo a seguir, no qual importamos a fonte “Shantell Sans”, a partir da
biblioteca do Google, e utilizamos na formatação do parágrafo:
@import url(‘https://fonts.googleapis.com/css2?family=Shantell’);
p{font-family: ‘Shantell Sans’, cursive;}
Site
O Google tem uma Biblioteca para facilitar o
uso de fontes remotas. Visite o Google Fonts e
explore os tutoriais e funcionalidades dispo-
níveis na ferramenta.
22
<!DOCTYPE html>
<html lang=”en”>
<head>
<title>Imagem transform</title>
<style>
.imagem {
transform: scale(0.2) rotate(360deg);
/*transition: all 2s*/;
}
.imagem:hover {
transform: scale(0.7);
}
</style>
</head>
<body>
<img src=”css.png” alt=”” class=”imagem”>
</body>
</html>
Se você digitou o código acima, pôde perceber que seu navegador exibe uma
imagem (logo do CSS) e, quando passamos o ponteiro do mouse sobre ela, a ima-
gem gira e aumenta de tamanho.
Não!
23
Quadro 3 – Exemplo comentado
Linha(s) Descrição
Para finalizar esta Unidade, devemos detalhar a propriedade transition, que per-
mite definir a transição entre dois estados de um elemento HTML. Experimente
excluir a linha 11 do código acima e perceberá que a imagem aumenta de tama-
nho quando movemos o cursor do mouse sobre ela quase instantaneamente,
sem o efeito de rotação!
div {
width: 100px;
height: 100px;
background: red;
transition: width 2s;
}
div:hover {
width: 300px;
}
24
Site
O CSS3 Generator é uma ferramenta que au-
xilia desenvolvedores iniciantes na geração de
códigos CSS3. Dentre as opções disponíveis, é
possível encontrar: border-radius, box-shadow
e text-shadow, entre outras.
25
MATERIAL COMPLEMENTAR
Sites
W3school
É um site voltado à aprendizagem de conteúdos de tecnologias como
HTML, CSS, Javascript e Python entre outros. Visite o tutorial de CSS.
https://bit.ly/3Lh4Arj
Code Adademy
É uma plataforma interativa on-line que oferece conteúdos em diversas
Linguagens de Programação.
https://bit.ly/3Pz12Dm
Sololearn
É uma plataforma on-line que disponibiliza material de diversas
Linguagens de Programação.
https://bit.ly/3R7J2RA
30 Dias de CSS3
É uma plataforma que oferece desafios diários que visam a ajudá-lo(a)
a melhorar as habilidades de codificação, utilizando HTML5 e CSS3.
https://bit.ly/460CSa0
REFERÊNCIAS BIBLIOGRÁFICAS
CLARK, R. et al. Introdução ao HTML5 e CSS3: a evolução da web. Rio de Janeiro: Alta
Books, 2014.
SILVA, M. S. Construindo sites com CSS e (X) HTML: sites controlados por folhas de
estilo em cascata. São Paulo: Novatec, 2008.
SILVA, M. S. CSS3: Desenvolva aplicações web profissionais com uso dos poderosos
recursos de estilização das CSS3. São Paulo: Novatec, 2012.
Conteudista
Prof. Me. Marco Antonio Sanches Anastacio
Revisão Textual
Prof.ª Dra. Selma Aparecida Cesarin
OBJETIVOS DA UNIDADE
• Entender as regras, a função e a importância da Linguagem de Progra-
mação Javascript na construção de páginas web;
Este arquivo PDF contém o mesmo conteúdo visto on-line. Sua dis-
ponibilização é para consulta off-line e possibilidade de impressão.
No entanto, recomendamos que acesse o conteúdo on-line para
melhor aproveitamento.
2
Introdução ao Javascript
Em maio de 2022, uma pesquisa realizada pelo StackOverFlow com mais de
70.000 desenvolvedores revelou como aprendem e sobem de nível, quais ferra-
mentas estão usando e o que desejam. No topo das Linguagens de Programação
mais utilizadas, encontramos o JavaScript, com mais de 65% de preferência, o
que mostra o porquê de ser considerada a linguagem mais popular entre os
desenvolvedores.
Site
Visite a página do StackOverFlow e conheça
mais detalhes dessa pesquisa.
Site
Visite a página do Apache Cordova para saber
mais sobre desenvolvimento mobile multipla-
taforma com o HTML, CSS e JS.
3
Todo o Código JavaScript é executado somente quando o evento ao qual está as-
sociado é acionado e, por esse motivo, o JS usa o chamado “modelo de execução
controlado por eventos”. Porém, em alguns casos, podemos inserir o Código sem
a associação a eventos e, dessa forma, a instrução ou o comando será executado
conforme o navegador interpreta a página web.
4
um evento. Os eventos serão vistos mais adiante. Por enquanto, faremos um
exemplo simples com o evento onclick, que é acionado quando o usuário clica
no elemento:
<html>
<head>
<title>Exemplo JavaScript</title>
</head>
<body>
<input type=”button” value=”Clique aqui” onclick=”alert(‘Olá Mundo
JS’)”>
</body>
</html>
Importante
Fique atento(a) ao uso de aspas duplas (“...”) e simples (‘...’) e,
sempre que possível, evite o uso de eventos direto em tags
HTML.
Se fizermos uma comparação com CSS, esse modo de inserir JavaScript em uma
página seria o modo incorporado. Seja dentro do body ou do head, sempre deve-
mos utilizar a tag <script>...<\script>, para demarcar o início e o fim do script JS.
Note que os comandos podem ser executados sem a necessidade de eventos.
Isso não é o mais comum, mas é um recurso que usaremos em nossos estudos.
5
<html>
<head>
<title>Exemplo JavaScript</title>
<script>
alert(“Eu estou no cabeçalho.”);
</script>
</head>
<body>
<script>
document.write(“<b class= ‘teste’>Eu estou no corpo do documen-
to.</b>”);
</script>
</body>
</html>
JavaScript Externo
Assim como em CSS, também podemos criar um arquivo separado do HTML com
nossos códigos em JavaScript. Esse arquivo deve ser salvo com a extensão .js e é
chamado no cabeçalho da página com a tag <script>.
<!--arquivo exemplo3.html-->
<html>
<head>
<title>Exemplo JavaScript</title>
<script src=”script3.js”></script>
</head>
<body>
Conteúdo da página. Também podemos fazer aqui chamadas para
blocos de códigos do arquivo .js.
</body>
</html>
6
//arquivo script3.js
alert(“Estou em um arquivo .js”);
Importante
Perceba que no arquivo .js não utilizamos as tags <script>...
<\script> para demarcar o código JS.
O que é um Evento?
Sempre que ocorre uma interação com um documento ou página, um evento é
disparado. Um evento pode ser qualquer interatividade do usuário com um ele-
mento HTML e alguns eventos também podem ser disparados pelo navegador.
7
Quadro 1 – Alguns eventos HTML
Evento Descrição
Saiba Mais
Os manipuladores de evento (event handler) são funções a se-
rem executadas quando um evento é acionado ou ocorre uma
ação do navegador. E o disparador de evento é o elemento
HTML em que o manipulador de evento foi adicionado.
<html>
<body>
<button onclick = “document.querySelector(‘#data’).innerHTML =
Date()”> Exibir data </button>
<p id=”data”></p>
</body>
</html>
8
Site
O método querySelector(‘#data’) retorna o
primeiro elemento filho que corresponda ao
id = “data”.
Leitura
O innerHTML é uma propriedade do Element
que define ou retorna o conteúdo HTML de
um elemento.
9
• Não deve conter espaço em branco ou caracteres especiais;
• quantidade;
• QUANTIDADE;
• Quantidade;
• QuAnTidAdE.
Existem duas palavras-chave para criarmos variáveis: var (antigo) ou let (moder-
no). Até a especificação ECMAScript 2015 (ES6), a palavra-chave var era utilizada
para declarar uma variável. Entretanto, era possível declararmos duas variáveis
com o mesmo nome, o que, às vezes, poderia levar a um resultado imprevisível
e incorreto.
Nesse exemplo, temos duas variáveis com o nome framework e a saída é Angular,
que foi a última declaração da variável.
10
const pi = 3.14;
pi = 3.14; // provocará erro
pi = 2 * pi; //também errado
let ang = 2 * pi; //permitido porque ang é uma variável
1. let x = 10;
2. let y = x; // y = 10
3. x = 15; // agora x = 15
4. let soma = x + y; // soma armazena o valor 25
Linha(s) Descrição
11
Nesse exemplo, você deve ter percebido que utilizamos o operador de adição (+).
No Quadro 3, temos os demais operadores aritméticos. Para fins de exemplo,
considere a variável x declarada anteriormente, que armazena o valor 15.
+ Adição z = x + 10 z = 25
- Subtração z = x - 10 z= 5
* Multiplicação z = x * 10 z = 150
Módulo (resto
% da operação z=x%7 z=1
de divisão)
++ Incremento z = x++ z = 16
-- Decremento z = x-- z = 14
Não há diferença entre as aspas duplas e simples, mas há diferença com o acen-
to grave, pois ele permite as chamadas templates String.
12
Leitura
Os templates String ou templates literais
constituem um recurso interessante, em
substituição à concatenação de valores.
Quando trabalhamos com texto, o operador de adição (+) é utilizado para conca-
tenar Strings.
let x = “Bom”;
let y = “dia”;
let z = x + y; // o resultado será: z=Bom dia
alert(z);
Tenha cuidado ao utilizar o operador de adição (+) com números e textos, pois o
resultado será sempre um texto:
let x = 4;
let y = “a”;
let z = x + y; // o resultado será z=”4a”
let x = “4”;
let y = “4”;
let z = x + y; // o resultado será z=”44”
Conversão de Tipos
Como vimos, não é necessário declarar os tipos das variáveis, pois, o JavaScript
faz a tipagem dinâmica do dado que está trabalhando. Entretanto, toda a entra-
da de dados feita pelo usuário é sempre considerada uma String (texto), mesmo
que a entrada sejam algarismos, como as notas de um aluno, por exemplo.
13
Isso pode gerar um resultado incorreto ou indesejado, se considerarmos, por
exemplo, que o operador de adição (+) tem comportamentos diferentes quando
utilizado em texto e ou número. Numa operação na qual exista um número e um
texto, o número sempre será convertido para texto e a operação ocorre como se
todos os dados fossem String.
Dessa forma, caso seja necessário realizar alguma operação matemática com os
valores lidos por meio de uma caixa de diálogo prompt ou um formulário com
campos de input, precisamos, inicialmente, convertê-los em números. Para isso,
temos duas funções em JavaScript que convertem para número inteiro (int) ou
decimal (float).
variável = parseInt(valor);
variável = parseFloat(valor);
No próximo exemplo, vamos solicitar ao usuário que digite dois números, por
meio de uma caixa de diálogo prompt, e exibimos a soma desses dois números:
Antes de finalizarmos este capítulo, você percebeu que, nos exemplos, utiliza-
mos comentários para destacar alguma informação importante do código? Pois
14
bem. Sempre é uma boa prática inserirmos comentários em nossos códigos e,
em JavaScript, podemos fazer isso de duas formas:
Comandos e Funções
Em JavaScript, uma função é um bloco de códigos destinado a realizar alguma
tarefa específica. Uma função pode ser executada por meio de uma chamada
direta ou por meio de um evento.
15
Figura 1 – Sintaxe de uma função
Fonte: Acervo do Conteudista
#ParaTodosVerem: imagem que descreve a sintaxe de uma função JavaScript. No centro, há um retângulo
com fundo cinza e, em seu interior, a definição da função. Acima desse retângulo, há três retângulos menores
e abaixo outros dois, todos contendo a descrição de cada um dos itens dessa sintaxe. Fim da descrição.
Uma função pode ou não retornar uma resposta para o ponto de chamada. Caso
necessite de retorno, utilizaremos o comando return. Quando não retorna re-
sultado, a função tem comportamento de procedimento e, nesse caso, não utili-
zaremos o comando return (ao encerrar, a função retornará o valor undefined).
O exemplo a seguir define uma função simples chamada soma, que recebe dois
números e retorna a soma deles:
16
A partir da versão ES6, foi introduzido o formato arrow function para criar funções
mais otimizadas. A sintaxe de uma arrow function contém a seguinte definição:
Leitura
Explore como as arrow functions permitem
uma sintaxe reduzida, mais curta, para fun-
ções.
Introdução às Decisões em
JavaScript
As decisões são importantes em programação, pois permitem executar diferen-
tes ações com base em alguma expressão condicional. A Figura 2 mostra o flu-
xograma de um programa que lê a média de um aluno e imprime o resultado
(“Aprovado” ou “Reprovado”), a partir de uma tomada de decisão (media >= 6.0).
17
Figura 2 – Tomada de decisões em programação
Fonte: Acervo do Conteudista
#ParaTodosVerem: imagem do fluxograma de uma estrutura de decisão. O fluxograma é composto por
figuras geométricas, que são utilizadas para definir os passos e a sequência da estrutura. Nessa Figura, o
losango é utilizado para representar a tomada de decisão quanto à média de um aluno ser maior ou igual
a seis. Fim da descrição.
18
Quadro 4 – Operadores relacionais
19
Quadro 5 – Operadores lógicos
E lógico: retorna
verdadeiro se ambas a==3 && b<10 //retorna True
&& as expressões são
verdadeira e falso nos a!=3 && b==5 //retorna False
demais casos.
Ou lógico: retorna
verdadeiro se pelo menos a==3 || b<10 //retorna True
|| uma das expressões é a!=3 || b==5 //retorna True
verdadeira e falso se a==1 || b==3 //retorna False
todas são falsas.
Estruturas de Decisão
São blocos de código executados somente se uma dada condição for satisfei-
ta, utilizados para controlar o fluxo de execução dos programas. Em JavaScript,
temos as seguintes estruturas de decisões:
20
if (condição){
//bloco de instruções caso a condição seja verdadeira
}
A decisão composta (if... else) avalia uma expressão lógica e, caso o resultado
seja verdadeiro (true), executa o primeiro bloco de Códigos. Caso contrário, exe-
cuta o segundo bloco de comandos (else).
if (condição){
//bloco de instruções caso a condição seja verdadeira
}
else {
//bloco de instruções caso a condição seja falsa
}
21
let data_hora = new Date();
let hora = data_hora.getHours();
if(hora < 12){
alert(“Bom dia!!!”);
}
else{
alert(“Tenha uma ótima tarde/noite”);
}
A estrutura encadeada (if... else if... else...) é utilizada quando temos várias con-
dições que devem ser testadas. Sua sintaxe é exibida a seguir:
if(condição 1){
//bloco de instruções 1
}
else {
if(condição 2){
//bloco de instruções 2
}
else {
//bloco de instruções 3
}
}
22
let data_hora = new Date();
let hora = data_hora.getHours();
if (hora < 12){
alert(“Bom dia!!!”);
}
else {
if(hora >= 12 && hora < 18){
alert(“Tenha uma ótima tarde”);
}
else {
alert(“Tenha uma ótima noite”);
}
}
switch (valor) {
case valor1:
//instruções 1
break;
case valor2:
//instruções 2
break;
case valor3:
//instruções 3
break;
default:
//instruções padrão
}
23
Observações importantes quanto ao uso dessa estrutura:
• Para cada caso, devemos colocar o comando break, que irá finalizar o
caso e evitar que o caso posterior seja executado;
Repetindo Códigos
Muitas vezes, precisamos concluir de modo rápido e eficiente tarefas repetitivas,
como uma tabuada, por exemplo. Para isso, as Linguagens de Programação têm
as estruturas de repetição ou laços de repetição (loop).
24
Estrutura de Repetição for
É compacta, pois inicialização, condição e atualização estão reunidas na declara-
ção do laço. Utilizamos essa estrutura quando sabemos exatamente o número
de repetições que serão feitas.
Sua sintaxe é:
Vejamos um exemplo que conta de 0 até 9 e exibe um alert na tela com o valor
da variável cont:
let cont;
for (cont = 0; cont < 10 ; cont++){
alert(“Número: “ + cont + “<br />”);
}
Sua sintaxe é:
25
//inicialização da variável de controle
while(condição){
//bloco de instruções
//atualização da variável de controle
}
O exemplo a seguir conta de 0 até 9 e exibe um alert na tela com o valor da va-
riável cont:
let cont = 0;
while(cont < 10){
alert(“Número: “ + cont + “<br />”);
cont = cont + 1; //ou cont++;
}
Parando um Laço
Podemos usar comando break para parar um determinado laço de repetição
conforme alguma condição no nosso Código. No exemplo a seguir, vamos somar
uma quantidade indeterminada de valores digitados pelo usuário. Como não sa-
bemos exatamente a quantidade, utilizamos uma condição if para parar o laço.
Assim, quando o usuário pressionar a tecla enter sem digitar um valor, vamos
encerrar o laço e exibir o resultado da soma:
26
let soma = 0;
while (true){
let num = Number(prompt(“Enter a number”, ‘’));
if(!num)
break;
soma += num;
}
alert(“Soma = “ + soma);
Continuando um Laço
O comando continue interrompe a iteração atual e força o laço a continuar para
a próxima iteração. No exemplo a seguir, desejamos imprimir somente os núme-
ros ímpares de 0 até 10. Portanto, sempre que o número for par, o condicional
if executa o comando continue e pula para a próxima iteração, ignorando a im-
pressão do número par:
Vetores
Vetores podem ser definidos como uma coleção de elementos ou itens que res-
pondem a um mesmo nome e que podem ser acessados segundo a posição (ín-
dice) que ocupam dentro do vetor.
27
Figura 3 – Representação gráfica de um vetor
Fonte: Acervo do Conteudista
#ParaTodosVerem: imagem da representação gráfica de um vetor. No centro, há um retângulo dividido
em 10 partes iguais, contendo números. Acima desse retângulo, há o título “Índices para acessar os valores
do vetor”. Abaixo do retângulo, há um texto “Valores armazenados em cada posição do vetor” e na parte
inferior da imagem, uma observação em destaque: “o primeiro índice de um vetor começa sempre em zero”.
Fim da descrição.
Para criar um vetor em JavaScript, utilizamos o objeto Array. Esse objeto, além de
criar um vetor em memória, também nos fornece diversos métodos para mani-
pular o vetor criado.
Perceba que, em todos os casos anteriores, podemos inserir mais posições sem-
pre que necessário. O Vetor não tem um tamanho fixo.
28
Podemos visualizar ou atribuir um valor para um vetor, acessando cada posição
por meio do índice, que deve ficar entre colchetes [...].
29
//Vetor com o uso de repetições
let i;
let frutas = [ ];
frutas[0]=”maçã”;
frutas[1]=”banana”;
frutas[2]=”morango”;
for (i=0; i<=2; i++){
alert(frutas[i]);
}
É importante notar como o uso correto da estrutura de repetição torna mais fácil
percorrer um vetor para consultas ou atualizações. Porém, o exemplo acima fun-
ciona muito bem para um vetor de somente três elementos! Na prática, é comum
que o tamanho do vetor seja desconhecido do programador!
Para finalizarmos esta Unidade, vamos lembrar-nos de que nosso vetor é dinâmi-
co e, portanto, permite que alteremos um valor ou até mesmo façamos a inclu-
são de um novo elemento. No último caso, estamos falando do método push(),
utilizado para adicionar um novo item ao final do vetor.
30
let carros = [“Honda”, “Fiat”, “Hundai”];
carros[2] = “Hyundai”; //Substitui o valor do elemento na posição 2
let c = prompt(“Digite um fabricante: “);
carros.push(c); //Adiciona um novo elemento ao final do vetor
Veja, a seguir, no Quadro 6 alguns dos principais métodos utilizados com vetores
em JavaScript.
31
Leitura
Visite a referência completa sobre vetores,
propriedades e métodos em JavaScript.
32
MATERIAL COMPLEMENTAR
Sites
Codepen
Ferramenta on-line para testar e exibir trechos de código HTML, CSS
e JavaScript que funciona como um editor on-line e ambiente de
aprendizagem.
https://bit.ly/3re2C3R
JSFiddle
Plataforma on-line que permite criar, testar e exibir trechos de códigos
em HTML, CSS e JS.
https://bit.ly/3rcmtAz
Leituras
W3school
Site voltado à aprendizagem de conteúdos de Tecnologias como HTML,
CSS, Javascript e Python, entre outros. Visite o tutorial de JavaScript.
https://bit.ly/3EwRF0z
30 Dias de JavaScript
A matéria apresenta uma série de desafios para melhorar as habilidades
de codificação por meio de mini projetos diários, utilizando programação
Web.
https://bit.ly/3PB1IYR
REFERÊNCIAS BIBLIOGRÁFICAS
CLARK, R. et al. Introdução ao HTML5 e CSS3: a evolução da web. Rio de Janeiro: Alta
Books, 2014.
SILVA, M. S. Construindo sites com CSS e (X) HTML: sites controlados por folhas de
estilo em cascata. São Paulo: Novatec, 2008.
SILVA, M. S. CSS3: Desenvolva aplicações web profissionais com uso dos poderosos
recursos de estilização das CSS3. São Paulo: Novatec, 2012.
Conteudista
Prof. Me. Marco Antonio Sanches Anastacio
Revisão Textual
Prof. Me. Claudio Brites
OBJETIVOS DA UNIDADE
• Entender o que é a biblioteca jQuery e como utilizá-la;
Este arquivo PDF contém o mesmo conteúdo visto on-line. Sua dis-
ponibilização é para consulta off-line e possibilidade de impressão.
No entanto, recomendamos que acesse o conteúdo on-line para
melhor aproveitamento.
2
Introdução ao jQuery
O jQuery é uma biblioteca JavaScript criada por John Resig e disponibilizada como
software livre e aberto, ou seja, de código open source, fornecida gratuitamente.
Sua biblioteca é utilizada para adicionar interatividade e dinamismo às páginas
web como, por exemplo, com funções de navegação, criação de animações e efei-
tos, funções para registrar/tratar eventos e funções para desenvolver aplicações
AJAX.
A biblioteca jQuery nada mais é do que um arquivo JavaScript que deverá ser in-
cluído na página em que serão aplicados os efeitos desejados. Esse arquivo pode
ser adicionado a partir de um arquivo público remoto conhecido como CDN, ou
a partir de um arquivo local, incluído na pasta do projeto. Observe o exemplo a
seguir que faz uso da biblioteca jQuery a partir de um repositório remoto:
<html>
<head>
<title>JQuery</title>
<script src=”https://code.jquery.com/jquery-3.6.4.js”></script>
</head>
</body>
<h1>Aprendendo jQuery</h1>
<body>
</html>
Leitura
O que é uma CDN?
Seletores e Operadores
A finalidade do jQuery é controlar o comportamento de uma página web e, para
tanto, é necessário encontrar os elementos HTML que constituem a página e
3
terão seu comportamento modificado. Nesse sentido, a sintaxe do jQuery é bas-
tante simples, veja a Figura 1.
Vejamos alguns exemplos de como utilizar o jQuery para ter acesso aos elemen-
tos de uma página web:
4
1. <html>
2. <head>
3. <title>JQuery</title>
4. <script src=”https://code.jquery.com/jquery-3.6.4.js”></script>
5. <script>
6. $(document).ready(function(){
7. $(“h1.main”).text(“Combinando seletores”);
8. });
9. </script>
10. </head>
11. <body>
12. <h1>Aprendendo jQuery</h1>
13. <h1 class=”main”>Aprendendo jQuery</h1>
14. <h1 class=”main”>Aprendendo jQuery</h1>
15. </body>
16. </html>
Se você digitou o código acima, pôde perceber que seu navegador trocou duas
ocorrências do título “Aprendendo jQuery” por “Combinando seletores”. No
Quadro 1, analisaremos o que está acontecendo:
Linha(s) Descrição
5
Podemos também substituir $(document).ready(function() pela chamada de sin-
taxe abreviada, que é a seguinte:
$(function() {
//bloco de códigos
})
Reflita
Você percebeu que o primeiro elemento <h1> não foi alterado?
Isso aconteceu, pois o código que utilizamos altera somente o
elemento cuja classe é main.
Com jQuery, podemos selecionar ou ter acesso aos elementos de acordo com
os atributos do HTML. Para isso, basta informar o atributo, o operador e o valor
dentro de colchetes ([]), conforme a sintaxe: $([atributo operador valor]).
Quadro 2 – Operadores
Operador Significado
6
abaixo:
Tratamentos de Eventos
Uma das principais características do jQuery é sua capacidade para responder a
eventos em um documento web. Os eventos podem ser, por exemplo, uma ação
do usuário:
A seguir, vejamos alguns dos eventos mais comuns utilizados com jQuery, que
estão listados abaixo:
Agora vamos aplicar esse conceito no exemplo a seguir, no qual o elemento <p>
é ocultado quando clicamos sobre ele:
7
<html>
<head>
<script src=”https://code.jquery.com/jquery-3.6.4.js”></script>
<script>
$(document).ready(function () {
$(“p”).click(function () {
$(this).hide();
});
});
</script>
</head>
<body>
<p>Se você clicar aqui, vou desparecer.</p>
<p>Clique aqui também!!</p>
</body>
</html>
8
<html>
<head>
<script src=”https://code.jquery.com/jquery-3.6.4.js”></script>
<script>
$(document).ready(function () {
$(“input”).focus(function () {
$(this).css(“background-color”, “red”);
});
});
</script>
</head>
<body>
Nome: <input type=”text” name=”fullname”><br>
</body>
</html>
Métodos
A seguir, vamos listar alguns dos principais métodos utilizados para manipular
elementos HTML:
9
• $(seletor).before(conteúdo): insere o conteúdo informado antes do
elemento.
<html>
<head>
<script src=”https://code.jquery.com/jquery-3.6.4.js”></script>
<script>
$(document).ready(function () {
$(“#b1”).click(function(){
$(“[type=’text’]”).val(“Inserindo um valor novo”);
$(“[type=’text’]”).before(“- antes -”);
$(“[type=’text’]”).after(“- depois -”);
$(“#d1”).prepend(“ Aprendendo “);
$(“#d1”).append(“ jQuery “);
$(“#d2”).html(“Programação Web”);
})
});
</script>
<style>
div{border: 1px solid saddlebrown;}
</style>
</head>
<body>
<div id=”d1”>Aprendendo jQuery</div>
<br>
<input type=”text” value=”valor inicial”>
<input id=”b1” type=”button” value=”Clique aqui”>
<br><br>
<div id=”d2”>Praticando jQuery</div>
</body>
</html>
10
Observe na Figura 2 a execução do código anterior:
Vejamos como isso funciona, começando com a sintaxe para retornar o valor de
uma propriedade CSS específica, que é dada por: $(seletor).css(“nome_da_pro-
priedade”). Vamos aplicar esse conceito no exemplo a seguir, que retorna a cor
de fundo do elemento <p>:
11
<html>
<head>
<script src=”https://code.jquery.com/jquery-3.6.4.js”></script>
<script>
$(document).ready(function () {
let valor = $(“p”).css(“background-color”);
$(“button”).click(function () {
alert(“Background-color=” + valor);
});
});
</script>
<style>
p {background-color: blueviolet; color: white; padding: 10px;}
</style>
</head>
<body>
<p>Clique no botão para revelar a cor de fundo.</p>
<button>Clique aqui</button>
</body>
</html>
12
<html>
<head>
<script src=”https://code.jquery.com/jquery-3.6.4.js”></script>
<script>
$(document).ready(function () {
$(“button”).click(function () {
$(“p”).css(“background-color”,”red”);
});
});
</script>
<style>
p {background-color: blueviolet; color: white; padding:
10px;}
</style>
</head>
<body>
<p>Clique no botão para mudar a cor de fundo.</p>
<button>Clique aqui</button>
</body>
</html>
13
WebStorage (HTML5)
Como o lançamento do HTML5, a retenção de dados no lado do cliente ficou mais
prática e eficiente por meio da API WebStorage, que oferece mecanismos para
que o navegador possa armazenar dados por meio de um conceito chave/valor,
com espaço maior de armazenamento e sem o envio das informações salvas
para o servidor.
Propriedade
Quadro 3Chrome Explorer
– Compatibilidade da API comMozilla Safari
os navegadores web Opera
<script>
if (typeof (Storage) !== “undefined”) {
alert(“Seu navegador possui suporte ao WebStorage!”)
} else {
alert(“Desculpe, mas seu navegador não possui suporte!”)
}
</script>
• SessionStorage, que armazena dados para uma sessão (os dados são per-
didos quando a guia do navegador é fechada).
14
O armazenamento web utiliza-se de um conceito de objetos, que são conjuntos
contendo pares de chave/valor. Observe na Figura 4 que a chave “nome” arma-
zena o valor “Marco”.
15
Figura 5 – Formulário de cadastro de alunos
#ParaTodosVerem: imagem da tela do navegador Chrome em fundo na cor branca. No centro, há um
retângulo com fundo na cor branca contendo um formulário com os campos “RGM”, “Nome” e “Curso”,
sendo que ao lado de cada campo há um retângulo para entrada de dados. Abaixo, três botões: o primeiro,
à esquerda, com fundo azul, contém o texto “Gravar”, o do centro tem fundo verde e a inscrição “Carregar”
e o último, à direita, tem fundo vermelho e o texto “Apagar”. Fim da descrição.
16
<script>
$(“#button1”).click(gravarDados);
$(“#button2”).click(carregarDados);
$(“#button3”).click(apagarDados);
function gravarDados() {
localStorage.setItem(“rgm”, $(“#rgm”).val());
localStorage.setItem(“nome”, $(“#nome”).val());
localStorage.setItem(“curso”, $(“#curso”).val());
alert(“Dados gravados”);
limparCampos();
}
function carregarDados() {
if (localStorage.length > 0) {
$(“#rgm”).val(localStorage.getItem(“rgm”));
$(“#nome”).val(localStorage.getItem(“nome”));
$(“#curso”).val(localStorage.getItem(“curso”));
} else {
alert(“Nenhum registro encontrado”);
}
}
function apagarDados() {
if (localStorage.length > 0) {
localStorage.clear();
} else {
alert(“Nenhum registro encontrado”);
}
limparCampos();
}
17
function limparCampos() {
$(“#rgm”).val(“”);
$(“#curso”).val(“”);
$(“#nome”).val(“”);
}
</script>}
function limparCampos() {
$(“#rgm”).val(“”);
$(“#curso”).val(“”);
$(“#nome”).val(“”);
}
</script>
AJAX
O AJAX é o acrônimo de Asynchronous JavaScript and XML, ou JavaScript e XML
Assíncronos, em bom português. Trata-se de um conjunto de técnicas para car-
regamento de conteúdo em uma página web que permite que aplicações traba-
lhem de modo assíncrono, tornando o conteúdo web mais interativo para o usu-
ário, uma vez que a troca de dados com o servidor ocorre em segundo plano. Na
prática, isso significa que conseguimos atualizar partes de uma página web sem
a necessidade de recarregar a página inteira.
18
A biblioteca jQuery oferece uma vasta documentação para se trabalhar as requi-
sições AJAX. O principal método para executarmos uma solicitação é o $.ajax(),
que é utilizado por todos os outros métodos jQuery AJAX.
1. <html>
2. <head>
3. <script src=”https://code.jquery.com/jquery-3.6.4.js”></script>
4. <script>
5. $(function(){
6. $(“button”).click(function(){
7. $.get({url: “dados.txt”, success: function(result){
8. $(“#p1”).html(result);
9. }});
10. });
11. });
12. </script>
13. </head>
14. <body>
15. <h2>AJAX com jQuery</h2>
16. <p id=”p1”>Clique no botão para alterar este conteúdo</p>
17. <button>Clique aqui</button>
18. </body>
19. </html>
19
Quando o botão “Clique aqui” for acionado, uma requisição será iniciada e os
dados do arquivo “dados.txt” serão carregados para a página web, substituindo o
conteúdo do parágrafo. Veja a seguir o código comentado no Quadro 4:
Linha(s) Descrição
Usar os métodos ajax() do jQuery torna as requisições mais simples do que usar
o método nativo do JavaScript, o XMLHttpRequest.
Entretanto, uma função mais moderna que tem se tornado muito popular é o
Fetch, que fornece uma implementação mais flexível e fácil de se fazer requi-
sições para busca de dados de forma assíncrona pela rede. O Fetch veio para
substituir o objeto XMLHttpRequest e tem se tornado padrão nas versões mais
atuais dos navegadores Firefox Chrome, mas, por se tratar de uma tecnologia
nova, navegadores mais antigos não reconhecem essa funcionalidade.
if(self.fetch) {
// execute minha solicitação do fetch aqui
} else {
// faça alguma coisa com XMLHttpRequest?
}
20
No exemplo a seguir, vamos fazer uma requisição Fetch para obter a lista de re-
positórios de um usuário do github:
1. <html>
2. <head>
3. <script src=”https://code.jquery.com/jquery-3.6.4.js”></script>
4. </head>
5. <body>
6. <h2>Repositórios do github</h2>
7. <p>Utilizando o Fetch para listar os repositórios do github</p>
8. <ul></ul>
9. <script>
10. const url = “https://api.github.com/users/msanches/repos”;
11. fetch(url)
12. .then(response => response.json())
13. .then(data => {
14. data.forEach(element => {
15. $(“ul”).append(“<li>” + element.name + “</li>”);
16. });
17. })
18. .catch(err => console.log(err))
19. </script>
20. </body>
21. </html>
/
21
Quadro 5 – Exemplo comentado
Linha(s) Descrição
22
MATERIAL COMPLEMENTAR
Sites
W3school
É um site voltado à aprendizagem de conteúdos de tecnologias como
HTML, CSS, Javascript, Python entre outros. Visite o tutorial de jQuery.
https://bit.ly/3PyCtGs
jQuery
Visite a página oficial do jQuery e descubra todos os recursos que a
biblioteca dispõe para o desenvolvimento web.
https://bit.ly/3sWXdi4
Leituras
Fetch API
É uma plataforma aberta destinada à aprendizagem de tecnologias
Web. Acesse a página com os conteúdos de Fetch API.
https://mzl.la/3PbcwLD
REFERÊNCIAS BIBLIOGRÁFICAS
CLARK, R. et al. Introdução ao HTML5 e CSS3: a evolução da web. Rio de Janeiro: Alta
Books, 2014.
SILVA, M. S. CSS3: Desenvolva aplicações web profissionais com uso dos poderosos
recursos de estilização das CSS3. São Paulo: Novatec, 2012.
Conteudista
Prof. Me. Marco Antonio Sanches Anastacio
Revisão Textual
Esp. Pérola Damasceno
OBJETIVOS DA UNIDADE
• Entender o que é o Vue.js e como utilizá-lo na construção de páginas web
interativas;
Este arquivo PDF contém o mesmo conteúdo visto on-line. Sua dis-
ponibilização é para consulta off-line e possibilidade de impressão.
No entanto, recomendamos que acesse o conteúdo on-line para
melhor aproveitamento.
2
Afinal, o que é Vue.js?
A popularidade do JavaScript entre os desenvolvedores web fez com que surgis-
sem, ao longo do tempo, uma enorme variedade de frameworks front-end, desti-
nados aos mais variados propósitos, como os mais utilizados no mercado atual-
mente: React, Angular e Vue.js.
Leitura
O que são aplicações SPA?
Leitura
Visite a página do StackOverFlow e conheça
mais detalhes dessa pesquisa.
3
De modo geral, o Vue.js é uma excelente escolha para projetos web que precisam
de um framework reativo, modular, leve e fácil de aprender. Dentre as principais
vantagens de sua utilização, podemos destacar as seguintes:
• Performance: por ser leve e rápido, ele tem bom desempenho para apli-
cações de pequeno ou grande porte;
Primeiros Passos
Para começar a utilizar o Vue.js você precisa adicioná-lo ao seu projeto. Existem
quatro formas principais para fazer isso, dependendo de suas necessidades:
Leitura
O que é npm?
4
Leitura
O que é CDN?
5
Hello World, Vue.js
Nossa primeira aplicação prática no mundo do Vue.js será um Hello World, cujo
código é apresentado no exemplo a seguir:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Meu primeiro app Vue</title>
5. <script src=”https://unpkg.com/vue@3”></script>
6. </head>
7. <body>
8. <div id=”app”>
9. {{ message }}
10. </div>
11. <script>
12. const app = Vue.createApp({
13. data() {
14. return {
15. message: ‘Hello World, Vue.js!’
16. }}
17. })
18. app.mount(‘#app’)
19. </script>
20. </body>
21. </html>
Neste exemplo, criamos uma instância Vue simples que renderiza a mensagem
“Hello World, Vue.js!” em um elemento HTML. Não se preocupe se o código pare-
ceu um pouco confuso para você, vamos comentar cada parte no Quadro 1:
6
Quadro 1 – Exemplo comentado
Linha(s) Descrição
Em nosso exemplo, o elemento HTML que será utilizado como destino é uma div
cujo id é app. A interpolação de dados irá renderizar a mensagem nesse elemen-
to e, para isso, utilizamos chaves duplas {{}} que contêm a propriedade que se
deseja exibir, neste caso mensagem.
Conhecendo o Vue.js
A arquitetura do Vue.js nos permite construir aplicações que renderize dados
no DOM (Document Object Model) utilizando-se uma sintaxe de template bastante
simples. O DOM é uma representação dos estilos, elementos e conteúdo de uma
página HTML, que mudam na medida em que há uma interação do usuário, o
que exige uma atualização constante do conteúdo pelo navegador.
7
Além disso, como vimos no exemplo anterior, a interpolação é uma forma sim-
ples, porém, poderosa de exibir dados dinamicamente. Veremos, a seguir, como
esses conceitos se integram à construção de páginas web.
<script>
const app = Vue.createApp({
/* opções */
})
app.mount(“#app”)
</script>
Toda instância Vue possui um ciclo de vida que passa por uma série de etapas
desde sua criação até sua destruição. Desta forma, existem propriedades opcio-
nais que caracterizam os diferentes estados de vida de uma instância Vue, que são:
8
• beforeCreate: a instância ainda não foi criada e, portanto, as proprieda-
des de dados e métodos ainda não estão disponíveis;
• created: a instância foi criada, porém, ainda não está pronta para ser
montada. As propriedades de dados e métodos já estão disponíveis;
• mounted: a instância foi montada no DOM e está pronta para ser utili-
zada;
9
<html>
<head>
<title>Ciclo de vida Vue</title>
<script src=”https://unpkg.com/vue@3”></script>
</head>
<body>
<div id=”app”>
<p>{{ message }}</p>
<input v-model=”message” />
</div>
<script>
const app = Vue.createApp({
data() {
return {
message: ‘Olá mundo Vue.js!’
}
},
created() {
console.log(‘Instância criada’)
},
mounted() {
console.log(‘Instância montada’)
},
updated() {
console.log(‘Instância atualizada’)
},
unmounted() {
console.log(‘Instância desmontada’)
}
})
app.mount(‘#app’)
</script>
10
</body>
</html></body>
</html>
Leitura
O que são as ferramentas de desenvolvimen-
to do navegador?
Diretivas do Vue.js
Sinteticamente, podemos definir as diretivas como sendo atributos adicionados
a um elemento HTML que estendem seu comportamento e funcionalidade. Na
prática, teremos um comportamento que reage a interações do usuário, atuali-
zando a interface dinamicamente.
No Vue.js as diretivas são precedidas pelo prefixo “v-”, são aplicadas aos elemen-
tos HTML e possuem comportamentos distintos, que são configuráveis por meio
de opções, como veremos mais adiante. As principais diretivas Vue.js são:
11
• v-model: é utilizada no conceito “two-way-databind”, ou seja, permite
criar um vínculo bidirecional de dados entre um elemento HTML (como
o input, por exemplo) e um componente Vue.js. A diretiva v-model per-
mite atualização automática do componente à medida que um campo
de formulário recebe informações. O two-way-databind é um dos con-
ceitos mais relevantes para o desenvolvimento de aplicações web inte-
rativas e é uma das principais vantagens do Vue.js em relação a outros
frameworks.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Two-way-data-bind Vue.js</title>
5. <script src=”https://unpkg.com/vue@3”></script>
6. </head>
7. <body>
8. <div id=”app”>
9. <label for=”nome”>Nome:</label>
10. <input type=”text” v-model=”nome”>
11. <p>Olá {{ nome }}! Bem-vindo ao Vue</p>
12. </div>
13. <script>
14. const app = Vue.createApp({
15. data() {
16. return {
17. nome: ‘’
18. }
19. }
20. })
21. app.mount(‘#app’)
22. </script>
23. </body>
24. </html>
12
Na prática
Compare este exemplo com os anteriores e observe a função
do v-model que adicionamos ao elemento input na linha 10.
Na prática
Neste exemplo, adicionamos ao modelo de dados uma pro-
priedade chamada imagemUrl, que atribuímos o valor https://
bit.ly/3RijRf9
<div v-if=”mostrarImagem”>
<img v-bind:src=”imagemUrl” alt=”Imagem”>
</div>
13
<div id=”app”>
<h1>{{ titulo }}</h1>
<p v-if=”mostrarImagem”>
<img v-bind:src=”imagemUrl” alt=”Imagem”>
</p>
<p>Clique no botão para ocultar / exibir a imagem</p>
<button v-on:click=”alternarImagem”>Clique-me</button>
</div>
<script>
const app = Vue.createApp({
data() {
return {
titulo: ‘Página web dinâmica’,
imagemUrl: ‘https://files.readme.io/86176b7-vuejs.png’,
mostrarImagem: true
}
},
methods: {
alternarImagem() {
this.mostrarImagem = !this.mostrarImagem;
}
}
})
app.mount(‘#app’)
</script>
14
No exemplo, methods refere-se à propriedade do Vue.js, que contém todos os
métodos que podem ser chamados em resposta a eventos, ou para executar al-
guma tarefa especificamente criada pelo desenvolvedor da aplicação.
<div id=”app”>
<ul>
<li v-for=”(nome, index) in nomes”>
{{ index }} - {{ nome }}
</li>
</ul>
</div>
A diretiva v-for itera sobre o array de nomes para gerar uma lista na qual para
cada nome é gerado um elemento li. O array de nomes foi criado dentro do ob-
jeto data:
<script>
const app = Vue.createApp({
data() {
return {
nomes: [‘Marco’, ‘Mariana’, ‘Ana’, ‘Alexandre’, ‘Suzana’]
}}
})
app.mount(‘#app’)
</script>
15
• v-show: é utilizada de forma semelhante ao v-if para controlar a exibi-
ção condicional de elementos com base em uma expressão. Vejamos um
exemplo completo:
<html>
<head>
<script src=”https://unpkg.com/vue@3”></script>
</head>
<body>
<div id=”app”>
<p v-show=”mostrarMsg”> {{ message }} </p>
<button v-on:click=”mostrarMsg = !mostrarMsg”>
Alterar exibição</button>
</div>
<script>
const app = Vue.createApp({
data() {
return {
message: “Esta mensagem será ocultada / exibida”,
mostrarMsg: true
}}
})
app.mount(‘#app’)
</script>
</body>
</html>
16
A despeito do resultado na prática ser o mesmo, a principal diferença entre o v-if
e o v-show está na forma como cada um altera a visibilidade de um elemento
utilizando o CSS. Enquanto o v-if insere ou remove elementos no DOM, o v-show
somente altera a propriedade display para none, ou seja, o elemento ainda exis-
te no DOM, somente sua visibilidade foi alterada.
Na prática
Em seu navegador favorito, abra “Ferramentas do desenvolve-
dor” e, na inspeção de “Elementos”, compare o resultado do uso
do v-if e do v-show.
Utilizando Componentes
Os componentes do Vue constituem um dos principais recursos do framework
e permitem criar elementos HTML personalizados, independentes e frequente-
mente reutilizáveis, para construção de interfaces de usuário.
17
1.<html>
2. <head>
3. <script src=”https://unpkg.com/vue@3”></script>
4. </head>
5. <body>
6. <div id=”app”>
7. <h1>{{ titulo }}</h1>
8. <carros-list
9. v-for=”carro in carros”
10. v-bind:carro = “carro”
11. ></carros-list>
12. </div>
13.<script>
14. const app = Vue.createApp({
15. data() {
16. return {
17. titulo: “Utilizando componentes”,
18. carros: [“Fusca”, “Kombi”, “Brasília”, “Uno”, “Opala”]
19. }}
20. })
21. app.component(“carros-list”, {
22. props: [“carro”],
23. template: “<li> {{ carro }} </li>”
24. })
25. app.mount(“#app”)
26.</script>
27.</body>
28.</html>
18
Site
Navegue na documentação oficial do Vue.js e co-
nheça um pouco mais sobre os componentes.
<html>
<head>
<script src=”https://unpkg.com/vue@3”></script>
</head>
<body>
<div id=”app”>
<h1>Reutilizando componentes</h1>
<button-counter></button-counter>
<button-counter></button-counter>
<button-counter></button-counter>
</div>
<script>
const app = Vue.createApp({})
app.component(“button-counter”, {
data(){
return {
count: 0
}},
template:`<button v-on:click=”count++”>
Você clicou {{ count }} vezes.
</button>`
})
19
app.mount(‘#app’)
</script>
</body>
</html>
A ideia desse exemplo foi criar um componente do tipo button cujo evento click
adiciona uma unidade a um contador (count). Perceba que implementamos o
componente button-counter uma única vez, mas, reutilizamos o template criado
três vezes, sem a necessidade de replicar o código utilizado.
Em Síntese
Como vimos nesta Unidade, o Vue.js é uma biblioteca JavaScript
moderna e progressiva para a construção de interfaces de usu-
ário interativas e reativas, que, por sua simplicidade, eficiência
e flexibilidade, permite aos desenvolvedores criarem aplicativos
web complexos de forma mais ágil. Os componentes facilitam a
organização e manutenção do código e as diretivas simplificam
a manipulação dinâmica do DOM, conferindo ao Vue.js uma
performance eficiente, com uma renderização rápida e otimiza-
da, que garante ótima experiência do usuário.
20
MATERIAL COMPLEMENTAR
Sites
Codesandbox
É uma plataforma em nuvem que permite e o desenvolvimento e
compartilhamento on-line de soluções web, de forma rápida e eficiente.
https://bit.ly/3RhidKJ
learnvue.co
É uma plataforma com conteúdos para aprendizagem do Vue.js.
https://bit.ly/44HrEpS
Vue.js Brasil
Conheça a página da comunidade brasileira dedicada ao Vue.js, explore
e enriqueça seus conhecimentos com diversos artigos em Português.
https://bit.ly/3resgFF
REFERÊNCIAS BIBLIOGRÁFICAS
CLARK, R. et al. Introdução ao HTML5 e CSS3: a evolução da web. Rio de Janeiro: Alta
Books, 2014.
SILVA, M. S. CSS3: Desenvolva aplicações web profissionais com uso dos poderosos
recursos de estilização das CSS3. São Paulo: Novatec, 2012.
Conteudista
Prof. Me. Marco Antonio Sanches Anastacio
Revisão Textual
Esp. Pérola Damasceno
OBJETIVOS DA UNIDADE
• Entender o que é o React e como utilizá-lo na construção de páginas web
interativas;
Este arquivo PDF contém o mesmo conteúdo visto on-line. Sua dis-
ponibilização é para consulta off-line e possibilidade de impressão.
No entanto, recomendamos que acesse o conteúdo on-line para
melhor aproveitamento.
2
Afinal, o que é React?
É inegável o quanto o JavaScript se tornou uma linguagem fundamental para
o desenvolvimento de páginas dinâmicas e interativas quando falamos sobre
interface de usuário. Apesar de sua versatilidade, com o tempo foram sur-
gindo diversas bibliotecas e frameworks que tornaram mais eficiente e rápida
a construção de páginas web, com recursos que vão desde o gerenciamen-
to de estado e interação com APIs externas até a criação e reutilização de
componentes.
Leitura
O que é uma API? Leia mais sobre no material
a seguir.
Site
Conheça em detalhes a pesquisa do
StackOverFlow.
3
Em 2015, também na JSConf US, foi lançada a biblioteca React Native, destinada à
criação de aplicações para dispositivos móveis que se utilizam de funções nativas
das plataformas Android e iOS.
Site
O JSConf é uma organização de conferências
JavaScript de todo o mundo.
4
Primeiros passos com React
Para utilização do React em um projeto, precisamos inicialmente incluir a biblio-
teca em seu código. Isso pode ser feito de duas formas:
Esse comando fará a instalação das bibliotecas React, que é responsável pela
criação e gerenciamento de componentes, e ReactDOM, que se encarrega da ren-
derização dos componentes na página.
Leitura
O que é npm? Introdução básica para inician-
tes.
<script src=”https://unpkg.com/react/umd/react.development.js”>
</script>
<script src=”https://unpkg.com/react-dom/umd/react-dom.develop-
ment.js”></script>
5
Leitura
Para fins didáticos, nessa Unidade utilizare-
mos a segunda opção, ou seja, iremos incluir
as bibliotecas diretamente em uma página
HTML. Entretanto, caso você deseje construir
uma nova aplicação totalmente do zero em
React, visite o tutorial disponível a seguir.
Nosso primeiro exemplo será uma página simples que utilizaremos para traba-
lhar alguns dos conceitos tratados:
1.<html>
2.<head>
3. <meta charset=”UTF-8”>
4. <title>Primeiros passos com React.js</title>
5. <script src=”https://unpkg.com/react/umd/react.development.js”></
script>
6. <script src=”https://unpkg.com/react-dom/umd/react-dom.develo-
pment.js”></script>
7.</head>
8.<body>
9. <div id=”root”></div>
10. <script>
11. const root = ReactDOM.createRoot (document.querySelector(‘#root’));
12. const element = React.createElement;
13. root.render(element(‘h1’, null, ‘Olá, bem-vindo ao React!!!’));
14. </script>
15.</body>
16.</html>
6
O código pareceu um pouco confuso para você? Não se preocupe, pois, no
Quadro 1, vamos comentar cada parte dele:
Linha(s) Descrição
Componentes
Não seria exagero afirmar que os componentes são o coração e essência do
React, pois permitem o desenvolvimento mais eficiente na medida em que a in-
terface de usuário é dividida em partes que são independentes e reutilizáveis.
7
<div id=”root”></div>
<script>
const { useState, createElement } = React;
function OlaMundo(props) {
const p = React.createElement(“p”, null,
`Olá, ${props.name}!`);
return p;
}
Nesse exemplo, o componente OlaMundo é definido por uma função que utiliza
o método createElement para retornar um elemento p. A função recebe uma
propriedade (props), chamada name, e o componente usa o método useState
para definir um estado para name, que é atualizado quando passamos o nome
da pessoa para o componente quando ele for renderizado.
Perceba que nosso exemplo requer a importação das funções useState e crea-
teElement da biblioteca React, o que é feito na linha: const { useState, create-
Element } = React.
Saiba Mais
Uma boa prática para tornar nosso código mais legível é impor-
tar apenas as funcionalidades específicas que precisamos da
biblioteca do React e usá-las diretamente em nosso código, sem
precisar chamar a biblioteca toda vez.
8
Finalmente, o método render é chamado para renderização do componen-
te, passando-se o resultado da chamada createElement(OlaMundo, {name:
“Marco”}) como argumento.
Saiba Mais
O parâmetro props da função é um objeto que armazena da-
dos para uso na criação da marcação HTML. No exemplo citado,
props.name é o nome de uma pessoa! Observe, também, que
o nome de componentes segue a sintaxe PascalCase (exem-
plo: OlaMundo).
O segundo parâmetro pode ser declarado vazio {}, null ou conter regras CSS. Já o
terceiro poderá ser vazio, conter um texto, ou outro elemento HTML, resultando
em aninhamentos em tantos níveis quanto desejarmos. Veja o exemplo a seguir:
9
const elemento = React.createElement(
‘h1’,
{className : ‘titulo’},
‘Olá mundo React!’
);
Importante
Observe que o segundo parâmetro se utiliza da palavra reserva-
da className e não class para definir o atributo HTML.
10
• componentDidMount(): executado após o componente ser montado
na página. Neste ponto, deve-se executar qualquer inicialização que o
componente precise;
Observe o exemplo a seguir, que, para fins didáticos, teve seu código dividido em
dois arquivos:
ciclo_de_vida.html
<html>
<head>
<title>Exemplo Ciclo de Vida</title>
<script src=”https://unpkg.com/react/umd/react.development.js”></
script>
<script src=”https://unpkg.com/react-dom/umd/react-dom.develo-
pment.js”></script>
</head>
<body>
<div id=”root”></div>
<script src=”ciclo_de_vida.js”></script>
</body>
</html>
11
ciclo_de_vida.js
12
O exemplo cria um componente chamado CicloDeVida, composto por um con-
tador e um botão que incrementa o contador a cada clique. O método render()
renderiza o contador e o botão, que possui um evento de clique, responsável por
chamar a função incrementar(). A cada clique, o estado do componente é atua-
lizado e o contador é renderizado novamente.
13
Figura 1 – Ciclo de vida React
#ParaTodosVerem: imagem do navegador Chrome da Google com fundo na cor branca. Ao lado esquerdo,
há um título com o texto “Contador: 3” e, logo abaixo, um botão cinza que contém o texto “Atualizar”. À direita,
é exibida a aba de ferramentas do desenvolvedor, com a guia “Console” selecionada com um traço na cor
azul na parte inferior. Logo abaixo, uma tabela exibe, do lado esquerdo, os estados do componente React
e, à direita, o nome da aplicação (ciclo_de_vida.js) seguida pela linha do código que está sendo executada.
Fim da descrição.
O que é o JSX?
JSX é o acrônimo de JavaScript XML, uma tecnologia criada com o objetivo de sim-
plificar a criação de elementos por meio de códigos JavaScript, muito utilizada no
desenvolvimento de interface do usuário como componentes do React.
Sua sintaxe declarativa, que permite criar um componente com uma estrutura
HTML e CSS escrita em JavaScript, proporciona o desenvolvimento de interfaces
mais intuitivas com códigos mais fáceis de ler e escrever, sem necessidade de
recorrer à concatenação de Strings ou métodos para criação de elementos dinâ-
micos em HTML.
Considere, por exemplo, uma página HTML que exiba dinamicamente um ele-
mento h1 com o texto “Hello JSX com React”. Na Figura 2, observe no código a tag
<h1>Hello JSX com React</h1>.
14
Figura 2 – Hello JSX com React
#ParaTodosVerem: imagem do navegador Chrome, da Google, com fundo na cor branca. Ao lado esquerdo,
há um título com o texto “Hello JSX com React”. À direita, é exibida a aba de ferramentas do desenvolvedor,
com a guia “Elementos”. Logo abaixo, uma seta na cor verde aponta para o elemento h1. Fim da descrição.
O código para criação de uma marcação HTML com uso de sintaxe de JavaScript
puro ficaria assim:
<div id=”root”></div>
<script>
//Código JS para criar o elemento h1
const elemento = document.createElement(“h1”);
const titulo = document.createTextNode(“Hello JSX com React”);
elemento.appendChild(titulo);
//Código JS para anexar o elemento à página
document.querySelector(“#root”).appendChild(elemento);
</script>
15
<div id=”root”></div>
<script type=”text/babel”>
//Código JSX para criar o elemento
const elemento = <h1>Hello JSX com React</h1>;
//Código React para anexar o elemento à página
ReactDOM.createRoot(document.querySelector(‘#root’)).render(ele-
mento);
</script>
Site
Acesse o código completo dos exemplos cita-
dos no repositório disponível a seguir.
Perceba que estamos substituindo três linhas de código por apenas uma! Isso
parece bastante promissor, você não acha?
Os arquivos contendo códigos JSX podem ser salvos com as extensões .js ou .jsx,
porém, para que os códigos sejam interpretados pelos navegadores, é necessá-
rio um tradutor, ou transpilador de código. O React usa o Babel para ler o conte-
údo JSX e transformá-lo em JavaScript puro.
Leitura
Saiba mais sobre o que é babel lendo o mate-
rial a seguir.
16
Observe que a sintaxe JSX permite a inserção de atributos, o que facilita o uso de
CSS para formatação dos componentes. Vejamos um exemplo completo de tudo
que vimos até agora sobre o JSX:
<html>
<head>
<meta charset=”UTF-8”>
<title>Primeiros passos com React.js</title>
<script src=”https://unpkg.com/@babel/standalone/babel.js”></script>
<script src=”https://unpkg.com/react/umd/react.development.js”></
script>
<script src=”https://unpkg.com/react-dom/umd/react-dom.develo-
pment.js”></script>
<style>
.hello {
color: #c05959;
font-size: 1.5em;
text-transform: uppercase;
}
</style>
</head>
<body>
<div id=”root”></div>
<script type=”text/babel”>
function Card(props) {
const element = (
<div>
<h1 className=”hello”> JSX com React </h1>
<p>Olá mundo, {props.name}</p>
</div>
)
return element;
}
function Button(props) {
return <button
17
onClick={props.onClick}>{props.label}
</button>;
}
const root = ReactDOM.createRoot(
document.querySelector(‘#root’));
root.render(<div>
<Card name=”JSX” />
<Button label=”Clique aqui” onClick={()
=> alert(‘Clicou no botão’)} />
</div>
);
</script>
</body>
</html>
• Observe que devemos utilizar className e não class para aplicar o CSS
ao elemento h1 do HTML.
18
Antes de encerrarmos esta Unidade, no próximo exemplo vamos retomar o com-
ponente de classe do React e explorar alguns recursos que essa sintaxe oferece:
<html>
<head>
<meta charset=”UTF-8”>
<title>Primeiros passos com React.js</title>
<script src=”https://unpkg.com/@babel/standalone/babel.js”></script>
<script src=”https://unpkg.com/react/umd/react.development.js”></
script>
<script src=”https://unpkg.com/react-dom/umd/react-dom.develo-
pment.js”></script>
</head>
<body>
<div id=”root”></div>
<script type=”text/babel”>
class Carro extends React.Component {
constructor(props) {
super(props);
this.state = {
marca: “Ford”,
modelo: “Camaro”,
cor: “amarela”,
ano: 1975
};
}
render() {
return (
<div>
<h1>Meu carro JSX</h1>
<ul>
19
<li>Marca: {this.state.marca}</li>
<li>Modelo: {this.state.modelo}</li>
<li>Cor: {this.state.cor}</li>
<li>Ano: {this.state.ano}</li>
</ul>
</div>
);
}
}
Neste exemplo, criamos uma classe “Carro”, que estende a classe React.
Component. O método constructor(props) é utilizado para inicializar o estado
interno do componente (state) com as propriedades (props).
20
• Validação de sintaxe: como é compilado para JavaScript, o JSX é vali-
dado pela sintaxe do JavaScript, evitando erros comuns de digitação e
garantindo que o código esteja correto antes de ser executado;
Em Síntese
O JSX é uma extensão da sintaxe do JavaScript que permite es-
crever componentes React de forma mais expressiva, uma vez
que permite a mistura de JavaScript e HTML em um único ar-
quivo. Porém, lembre-se que o JSX precisa ser convertido em
JavaScript puro (transpilado) antes de ser executado, já que não
é uma sintaxe reconhecida pelo navegador ou pelo interpreta-
dor JavaScript padrão.
21
MATERIAL COMPLEMENTAR
Sites
W3Schools – React
https://bit.ly/3Z9MJIx
React Native
Crie aplicativos nativos para Android, iOS e muito mais usando o React.
https://bit.ly/3PgUNmb
Leituras
O que é Babeljs
Saiba mais sobre a importância do Babeljs para o JavaScript moderno.
https://bit.ly/461fzxr
REFERÊNCIAS BIBLIOGRÁFICAS
CLARK, R. et al. Introdução ao HTML5 e CSS3: a evolução da web. Rio de Janeiro: Alta
Books, 2014.
MDN WEB DOCS. Começando com React. [s.d.]. Disponível em: < h t t p s : / / d e v e l o p e r .
m o z i l l a . o r g / p t - B R / d o c s / L e a r n / T o o l s _a n d _ t e s t i n g / C l i e n t - s i d e _ J a v a S c r i p t _ f r a m e
w o r k s / R e a c t _ g e t t i n g _ s t a r t e d >. Acesso em: 01/07/2023.
STEFANOV, S. Primeiros passos com React: construindo aplicações web. São Paulo:
Novatec, 2016.