Programação Web
Fundamentos da web
Desenvolvimento web
Agenda Fundamentos da Web
- Cliente/Servidor
- Protocolo
- Requisições
- Domínio/DNS
- Servidores de aplicação
- Aplicação web
- Desenvolvimento back-end x front-end
Clientes
- Acessa algum recurso do servidor
- Identificador IP
- Independe do sistema operacional,
-
Informação implícitas
- localização,
- versão de software
- Comunicação baseada em protocolo
- Agente ativo
Servidores
- Computadores físicos ou virtualizados
- Identificador IP
- Linux, Windows, Unix...
- Servidor físico locais
- Servidores virtuais VPS (Virtual Private Server)
- AWS
- Google Cloud
- Azure
- Agente passivo
Protocolos
- Conjunto de regras e procedimentos
- HTTP (Hypertext Transfer Protocol)
- REST (Representational State Transfer)

Requisições

Domínio
- Nome (Apelidos) mais fácil de memorizar do que um IP
- Aquisição via CPF ou CNPJ

DNS
- Domain Name Server
- Resolve nomes de domínios em IPs
- Sem ele a internet pararia de funcionar

Servidores de Aplicação
- Software que prover o acesso aos recursos da aplicação web




Aplicação Web
- Protocolo HTTP
- Fonte dos recursos
- Páginas
- Imagens/Videos
- Envio de e-mail
- Operações/Cálculos
- Cadastros/Banco de dados
- API
Aplicação Web
História


Cliente
Server
Domínio
DNS
Servidor de aplicação
Aplicação web
Browser
Arquitetura para uma Aplicação Web

Dev. front end x Dev. back end

Back end
- Python, PHP, Java, Ruby, C#
- Bancos de dados e SQL, NoSQL
- Web services
- Apache, NGinx, IIS
- Algoritmo
- Lógica de Programação
- Servidores
- Linux, Windows
Front end
- HTML5
- CSS3
- Javascript
- Bootstrap
- Design
- Teoria de cores
- Usabilidade
- Tipografia
- UX
Desenvolvimento Web
- HTML
- CSS
- JavaScript
- Bootstrap
- jQuery
- Frameworks
Front-end
HTML / HTML5
- HTML Descreve a estrutura de uma página Web
- Composto por uma série de elementos
- Elementos HTML diz ao Browsers como exibir o conteúdo
- Elementos HTML são representados por tags
- Tags HTML rotular pedaços de conteúdo, como "título", "parágrafo", "tabelas", e assim por diante
- Browsers não exibir as tags HTML, mas usá-los para processar o conteúdo da página
Hyper Text Markup Language
HTML / HTML5
Hyper Text Markup Language

HTML / HTML5
Hyper Text Markup Language
<tagname>content goes here...</tagname>ABRE Tag
FECHA Tag
HTML / HTML5
Hyper Text Markup Language


DOM
Document Object Model
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>This is a Heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
HTML / HTML5
- É uma linguagem de marcação
- É fácil de aprender
- É divertida
HTML / HTML5
-
Principais tags
- títulos <h>
- textos - <p> parágrafos <br /> e <hr />
- listas - <ul> <ol>
- links <a href>
- imagens <img src>
- botões <button on>
- tabelas* <table>
HTML / HTML5
-
Principais atributos
-
href,
-
source,
-
nome
-
id,
-
class,
-
style,
-
with, ---> <div>
-
height,
-
title,
-
style
-
HTML / HTML5
-
Tags de formatação
- <b> - Texto em negrito
- <strong> - texto Importante
- <i> - O texto em itálico
- <em> - texto enfatizado
- <mark> - texto marcado
- <small> - texto pequeno
- <del> - texto excluído
- <ins> - Texto inserido
- <sub> - Texto Subscrito
- <sup> - texto sobrescrito
-
Comentário
HTML e CSS
-
Uso correto de indentação
-
É recomendada a adição de comentários antes da abertura e pós o fechamento de tags estruturais (que conterão outras tags)
-
Evitar usar !important
-
Usar html semântico sempre possível
-
Folhas de estilo no <head> e scripts JS ao final do <body>
-
Estrutura lógica básica
-
css/
-
js/
-
intex.html
-
Boas práticas
CSS / SCSS
-
CSS é uma linguagem que descreve o estilo de um documento HTML.
-
CSS descreve como elementos HTML deve ser exibido
Cascading Style Sheets
Quando tags como <font> e atributos de cor foram adicionados à especificação HTML 3.2, começou um pesadelo para os desenvolvedores web. Desenvolvimento de grandes sites, onde fontes e cores informações foram adicionadas para cada página, tornou-se um processo longo e caro.
Para resolver este problema, o World Wide Web Consortium (W3C) criou CSS.
CSS removeu o estilo de formatação da página feita no HTML!
CSS / SCSS
Cascading Style Sheets
As definições de estilo são normalmente
guardados em arquivos .css externas.
CSS / SCSS
Cascading Style Sheets

CSS / SCSS
Cascading Style Sheets
-
Seletores
-
seletores simples
- selecionar elementos com base no nome, id, classe
- seletores de combinadores
- selecionar elementos com base em uma relação específica entre eles
- Seletores pseudo-classe
- selecionar elementos com base em um determinado estado
- Pseudo-elementos seletores
- seleccionar e estilo de uma parte de um elemento
- Seletores de atributos
- selecionar elementos com base em um atributo ou valor de atributo
-
seletores simples
CSS / SCSS
Cascading Style Sheets
-
Formas de inserção
-
External CSS
-
Internal CSS
-
Inline CSS
-
-
Comentários
body {
background-color: lightblue;
}
h1 {
color: white;
text-align: center;
}
p {
font-family: verdana;
font-size: 20px;
}
CSS / SCSS
- É uma linguagem de estilização
- Descreve como os elementos devem aparecer
- É possível generalizar estilos
Cascading Style Sheets
CSS / SCSS
-
Atividade:
- estilizar a <table>
- estilizar a <div> transformar em um circulo
Cascading Style Sheets
CSS
-
Propriedades tipográficas e fontes
Cascading Style Sheets
h1 {
font-family: serif;
}
h2 {
font-family: sans-serif;
}
p {
font-family: monospace;
text-transform: uppercase;
}
body {
font-family: "Arial", "Helvetica", sans-serif;
}CSS
-
Alinhamento e decoração de texto
Cascading Style Sheets
p {
line-height: 3px; /* tamanho da altura de cada linha */
letter-spacing: 3px; /* tamanho do espaço entre cada letra */
word-spacing: 5px; /* tamanho do espaço entre cada palavra */
text-indent: 30px; /* tamanho da margem da primeira linha do texto */
}CSS
-
Bordas
Cascading Style Sheets
body {
border-color: red;
border-style: solid;
border-width: 1px;
}CSS
-
Cores
Cascading Style Sheets
h1 {
background-color: yellow;
}
h3 {
color: rgb(255, 200, 0);
}
h4 {
background-color: #F2EDED;
}CSS
-
Espaçamento, Margem e Dimensões
- Dimensões
- Margin
- Padding
Cascading Style Sheets
CSS
-
Dimensões
Cascading Style Sheets
p {
background-color: red;
height: 300px;
width: 300px;
}CSS
-
Margin
Cascading Style Sheets
p {
margin: 1px 2px 3px 4px;
margin-top: 3px;
margin-right: 3px;
margin-left: 3px;
margin-bottom: 3px;
}CSS
-
Padding
Cascading Style Sheets
p {
padding: 1px 2px 3px 4px;
padding-top: 3px;
padding-right: 3px;
padding-left: 3px;
padding-bottom: 3px;
}CSS
-
Fluxo do documento e float
Cascading Style Sheets
#imagem {
margin-left: auto;
margin-right: auto;
width: 550px;
}
div {
float: left;
}CSS
-
Cascata e herança
Cascading Style Sheets
<div id="pai">
<h1>Sou um título</h1>
<h2>Sou um subtítulo</h2>
</div>
<style>
#pai {
color: blue;
}
</style>CSS
-
Display inline-block
Cascading Style Sheets
.painel li {
display: inline-block;
vertical-align: top;
width: 140px;
margin: 2px;
padding-bottom: 10px;
}CSS
-
Seletores inteligentes
Cascading Style Sheets
input[type="text"] {
border-radius: 4px;
}
div[class|="menu"] {
border-radius: 4px;
}
input[value~="problema"] {
color: #CC0000;
}CSS
-
Seletores inteligentes
Cascading Style Sheets
/* busca por inputs com valor de "name" iniciando em "usuario" */
input[name^="usuario"] {
color: #99FFCC;
}
/* busca por inputs com valor de "name" terminando em "teste" */
input[name$="teste"] {
background-color: #CCFF00;
}
/* busca por inputs com valor do atributo "name".
contendo "tela" em qualquer posição */
input[name*="tela"] {
color: #666666;
}CSS
-
CSS Reset
Cascading Style Sheets
- Quando não especificamos nenhum estilo para nossos elementos do HTML, o navegador utiliza uma série de estilos padrão, que são diferentes em cada um dos navegadores. Em um momento mais avançado dos nossos projetos, poderemos enfrentar problemas com coisas que não tínhamos previsto
HTML Semântico
User Experience Design - UX
ou Interaction Design (IxD)
- Um projeto de site ou aplicação web envolve muitas disciplinas em sua execução, pois são diversas características a serem analisadas diversas as possibilidades apresentadas pela plataforma.
- Devemos conhecer muito bem as características do público alvo, pois ele define qual a melhor abordagem para definir a navegação, tom linguístico e visual a ser adotado.
organizando o caos com HTML5
HTML Semântico
<body>
<div id="cabeclaho">
<!-- Conteúdo do cabeçalho -->
</div>
<div id="side-bar">
<!-- Conteúdo do menu lateral -->
</div>
<div id="content">
<!-- Conteúdo conteudo principal -->
</div>
<div id="destaques">
<!-- Painéis com destaques -->
</div>
<div id="footer">
<!-- Conteúdo do rodapé -->.
</div>
</body>organizando o caos com HTML5
HTML Semântico
<body>
<header>
<!-- Conteúdo do cabeçalho -->
</header>
<nav>
<!-- Conteúdo do menu lateral -->
</nav>
<main>
<!-- Conteúdo conteudo principal -->
</main>
<aside>
<!-- Painéis com destaques -->
</aside>
<footer>
<!-- Conteúdo do rodapé -->.
</footer>
</body>organizando o caos com HTML5
HTML Semântico
organizando o caos com HTML5
-
Mais <tags>
<header>
<section>
<article>
<nav>
<aside>
<main>
<figure>
<footer>
<time>

-
Wireframes
Desafio Petshop
Crie uma pagina de exposição de serviços oferecidos por um Petshop
JavaScript
-
É uma das 3 línguas que todos os desenvolvedores web devem aprender:
1. HTML para definir o conteúdo de páginas da web
2. CSS para especificar o layout de páginas da web
3. JavaScript para programar o comportamento de páginas da web
-
Páginas da web não são o único lugar onde o JavaScript é usado. Muitos programas de desktop e servidor usam JavaScript. Node.js é o mais conhecido.
-
Alguns bancos de dados, como MongoDB (JSON) e CouchDB, também usam JavaScript como sua linguagem de programação.
JavaScript
- JavaScript e Java são completamente diferentes idiomas, tanto no conceito e design.
- JavaScript é uma linguagem scripting e interpretada.
- Foi inventado por Brendan Eich, em 1995, e tornou-se um padrão ECMA em 1997.
- ECMA-262 é o nome oficial da norma. ECMAScript é o nome oficial da língua.
- É fácil de aprender
- Existem "infinitas" possibilidades
ECMAScript é uma especificação de linguagem de programação baseada em scripts, padronizada pela Ecma International na especificação ECMA-262 e ISO/IEC 16262
JavaScript
- Outra característica comum nas linguagens de scripting é que normalmente elas são linguagens interpretadas, ou seja, não dependem de compilação para serem executadas.
- Essa característica é presente no JavaScript: o código é interpretado e executado conforme é lido pelo navegador, linha a linha, assim como o HTML.
- O scripting JavaScript pode mudar HTML
- Um dos muitos métodos JavaScript HTML é getElementById().
- Este método "encontra" um elemento HTML no DOM e podemos trabalhar com esse elemento.
<!DOCTYPE html>
<html>
<body>
<h2>My First JavaScript</h2>
<button type="button" onclick="document.getElementById('demo').innerHTML = Date()">
Click me to display Date and Time.</button>
<p id="demo"></p>
</body>
</html>JavaScript
- Exemplo básico

JavaScript
<!DOCTYPE html>
<html>
<body>
<h2>What Can JavaScript Do?</h2>
<p>JavaScript can change HTML attribute values.</p>
<p>In this case JavaScript changes the value of the src (source) attribute of an image.</p>
<button
onclick="document.getElementById('myImage').src='https\:\/\/www.w3schools.com\/js\/pic_bulbon.gif'">
Turn on the light
</button>
<img id="myImage"
src="https://www.w3schools.com/js/pic_bulboff.gif" style="width:100px">
<button
onclick="document.getElementById('myImage').src='https\:\/\/www.w3schools.com\/js\/pic_bulboff.gif'">
Turn off the light
</button>
</body>
</html>- Exemplo básico, mais legal!
JavaScript
A tag <script>
- Em HTML, o código JavaScript deve ser inserido entre <script>e </script>.
- Vamos modificar o exemplo da lampada...
Funções e Eventos de JavaScript
- function é um bloco de código JavaScript, que pode ser executado quando "chamado" para.
- Por exemplo, uma função pode ser chamada quando um evento ocorre, como quando o usuário clica em um botão.
- Corrigir o exemplo da lampada...
JavaScript
Syntax
- Operadores
- Variáveis
- Tipos de dados
- Number
- String
- Listas
- Objetos (JSON)
- Funções
É possível omitir o ponto e vírgula no final de cada declaração. A omissão de ponto e vírgula
funciona no JavaScript devido ao mecanismo chamado automatic semicolon insertion (ASI).
JavaScript
Syntax básico
let x;
x = 5;
x = "John";
x = {firstName:"John", lastName:"Doe"};
typeof(x);
typeof("John");
typeof(3.14);
typeof(true);
typeof(false);
typeof(y);JavaScript
Syntax listas (Arrays)
let cars = ["Saab", "Volvo", "BMW"];
let cars = new Array("Saab", "Volvo", "BMW");
cars.toString();
cars.pop();
cars.push("Ferrari");
cars.shift();
cars.unshift("Mercedes")
cars.sort();
cars.reverse(); JavaScript
O DOM
- Para permitir alterações na página, ao carregar o HTML da página, os navegadores carregam em memória uma estrutura de dados que representa cada uma das nossas tags no JavaScript. Essa estrutura é chamada de DOM (Document Object Model). Essa estrutura pode ser acessada através da variável global document
- O termo document é frequentemente utilizado em referências à nossa página. No mundo front-end, documento e página são sinônimos.
JavaScript
O DOM
- Para permitir alterações na página, ao carregar o HTML da página, os navegadores carregam em memória uma estrutura de dados que representa cada uma das nossas tags no JavaScript. Essa estrutura é chamada de DOM (Document Object Model). Essa estrutura pode ser acessada através da variável global document
- O termo document é frequentemente utilizado em referências à nossa página. No mundo front-end, documento e página são sinônimos.
JavaScript
querySelector
- Acessar via JavaScript, elementos do DOM que queremos alterar.
- Capacidade de usar os seletores para encontrar os elementos na página.
document.getRootNode()
// CONSULTA DE ELEMENTO(S)
document.getElementById("id")
document.getElementsByClassName("")
document.getElementsByName("")
document.getElementsByTagName("")
// CONSULTA DE SELETORES
document.querySelector("h1")
document.querySelector(".class")
document.querySelector("#id")
document.querySelectorAll("div")JavaScript
Funções e os eventos do DOM
- Apesar de ser interessante a possibilidade de alterar o documento todo por meio do JavaScript, é muito comum que as alterações sejam feitas quando o usuário executa alguma ação, como por exemplo, mudar o conteúdo de um botão ao clicar nele e não quando a página carrega.
- Porém, por padrão, qualquer código colocado no <script> é executado assim que o navegador lê ele.
- Para guardarmos um código para ser executado em algum outro momento, por exemplo, quando o usuário clicar num botão, é necessário utilizar alguns recursos do JavaScript no navegador.
JavaScript
Funções e os eventos do DOM
- oninput: quando um elemento input tem seu valor modificado
- onclick: quando ocorre um click com o mouse
- ondblclick: quando ocorre dois clicks com o mouse
- onmousemove: quando mexe o mouse
- onmousedown: quando aperta o botão do mouse
- onmouseup: quando solta o botão do mouse (útil com os dois acima para gerenciar drag'n'drop)
JavaScript
Funções e os eventos do DOM
- onkeypress: quando pressionar e soltar uma tecla
- onkeydown: quando pressionar uma tecla
- onkeyup: quando soltar uma tecla
- onblur: quando um elemento perde foco
- onfocus: quando um elemento ganha foco
- onchange: quando um input, select ou textarea tem seu valor alterado
- onload: quando a página é carregada
- onunload: quando a página é fechada
- onsubmit: disparado antes de submeter o formulário (útil para realizar validações)
JavaScript
Funções e os eventos do DOM
function mostraAlerta() {
alert("Funciona!");
}
var botao = document.querySelector("#meuBotao");
botao.onclick = mostraAlerta;JavaScript
console.log e Funções anonimas
console.log("texto...", variavel, [], {});
var botao = document.querySelector("#meuBotao");
botao.onclick = function () {
alert("Funciona!");
};
botao.onclick = () => alert("Funciona!");JavaScript
JavaScript no <head> ou <body>
- Você pode colocar qualquer número de scripts em um documento HTML.
- Os scripts podem ser colocados no <body>, ou na <head>seção de uma página HTML, ou em ambos.
Qual é a melhor opção?
boas práticas JavaScript
JavaScript
Boas práticas JavaScript
- Separar os scripting em arquivos .js
- Boa indentação
- Utilize o operador === e não ==
- Não declare variáveis com o operador var
- No ES6 foram criados os operadores let e const)
- Coloque os Scripts no fim da tag <body>
- Clean Code
Desafio Petshop
Na pagina de exposição de serviços oferecidos por um Petshop, ao clicar em um produto ou serviço apresente o valor do produto para o usuário;
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="jumbotron text-center">
<h1>My First Bootstrap Page</h1>
<p>Resize this responsive page to see the effect!</p>
</div>
<div class="container">
<div class="row">
<div class="col-sm-4">
<h3>Column 1</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
</div>
<div class="col-sm-4">
<h3>Column 2</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
</div>
<div class="col-sm-4">
<h3>Column 3</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
</div>
</div>
</div>
</body>
</html>Bootstrap
- É um framework para o desenvolvimento da web responsiva
- É fácil de aprender
- É divertida
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
</head>
<body>
<p>If you click on me, I will disappear.</p>
<p>Click me away!</p>
<p>Click me too!</p>
</body>
</html>jQuery
- É uma biblioteca JavaScript para facilitar a programação
Frameworks
Angular https://angular.io/

Vuejs https://vuejs.org/
Programação Web
By Henrique Vignando
Programação Web
- 89