Web Standards
Como construir sistemas arrasadores usando AJAX
Apresentação
Professor: Sérgio dos Santos
FDV: 7º Período [ Sistemas de Informação ] FORMANDO dez/2007 
E-mail: [email protected]
Cel: 31 8411 2320
Colunista no iMasters desde dez/2006
http://www.imasters.com.br/
Delicious: del.icio.us/serginhosant/webstandards
Blog: www.gigro.com/blog
Web Standards

São normas para Web e tem por objetivo:

Criação de uma Web universal;

Evitar que apenas um membro da equipe tenha domínio exclusivo sobre
o desenvolvimento;

Acessibilidade; e

Melhor posicionamento nas ferramentas de busca.

É um conjunto de normas, diretrizes, recomendações, notas,
artigos, tutoriais e afins de caráter técnico, produzidos pelo W3C; e

Destinada a orientar desenvolvedores para o uso de práticas que
possibilitem a criação de uma Web acessível a todos, ajudados por
diversos recursos que fazem uma Web mais agradável de usar.
W3C

O World Wide Web Consortium é um consórcio de empresas de
tecnologia, atualmente com cerca de 500 membros;

Fundado por Tim Berners-Lee em 1994 para levar a Web ao seu
potencial máximo, por meio do desenvolvimento de protocolos
comuns e fóruns abertos que promovem sua evolução e asseguram
a sua interoperabilidade; e

Todos os sites desenvolvidos segundo os padrões W3C podem ser
acessados e visualizados por qualquer pessoa ou tecnologia,
independente de hardware ou software.
Nosso dever

É um dever de todo desenvolvedor Web respeitar e seguir os
padrões do W3C, pois de outro modo poderá impor barreiras
tecnológicas a diversas pessoas, desestimulando e até mesmo
impedindo o acesso a suas páginas; e

Cabe agora aos desenvolvedores atualizarem seus conhecimentos e
revolucionar a Internet, pois internet mudou a vida das pessoas;
agora, são as pessoas que vão mudar a internet.
A guerra dos browsers

Pela primeira vez desde que a Microsoft lançou seu browser, em
1995, o Internet Explorer está perdendo participação de mercado;

Segundo pesquisa da WebSideStory, a fatia de usuários do IE caiu
de 95,48% em julho de 2004 para 88,86% em abril de 2005;

Essa queda pode ser ainda maior, já que uma nova safra de bons
navegadores atrai usuários de todos os tipos;
A guerra dos browsers
Fonte: http://www.css3.info
A guerra dos browsers

Com tantas opções a um simples download, por que se preocupar?

Que browser é o melhor?

Devo realmente mudar?

Há uma série de razões pelas quais usuários estão fugindo do IE,
mas a maioria delas restringe-se a questões de segurança;
A guerra dos browsers

Nenhum browser está isento de falhas;

A Fundação Mozilla remendou alguns buracos do Firefox e a Opera
publicou algumas atualizações focadas em segurança no ano
passado;

Os produtores de vírus e os hackers miram o IE porque há uma
infinidade de sistemas rodando esse programa;
A guerra dos browsers

De todos os browsers, o Firefox sobressai como a melhor escolha
de todas;

O Firefox faz um excelente trabalho na exibição das páginas,
oferece interface superior e dá menos problemas que outras
opções, inclusive o Opera; e

Além disso, é mais customizável por meio das chamadas extensões
para o Firefox.
Fire Bug
Disponível em: http://del.icio.us/serginhosant/mozilla
A grande sacada

Na verdade, a grande sacada do web standards está na total
separação das camadas envolvidas em um projeto web, que são
respectivamente:
 Informação (html);
 Estilo (css); e
 Comportamento (javascript).
Tableless

É uma metodologia de desenvolvimento de layouts sem o uso de
tabelas, da qual toda informação é separada da formatação,
formando assim, as camadas de estrutura e de apresentação;

Com esta metodologia, é possível reduzir o tamanho dos arquivos
de código em até 70%, tornando o site mais rápido, mais leve e
consequentemente reduzindo a banda utilizada no o seu
carregamento; e

É importante lembrar que isso também garante que seu site seja
visualizado em qualquer dispositivo, independente dele aceitar
folha de estilo ou não, como, por exemplo, em celulares.
Semântica

Semântica é uma palavra de origem grega (semantiké) que
traduzida seria "a arte da significação". É o estudo do significado
das palavras e de sua relação de significação nos signos
lingüísticos. Signo é todo objeto ou símbolo que tem um significado
por si mesmo, como a cruz que representa o cristianismo, a cor
vermelha como um sinal de pare, uma palavra qualquer como
"cadeira" que nos remete a um objeto no mundo real;

Escrever algo semântico então, é utilizar uma tag no contexto certo
para a qual ela foi criada:

<acronym title=“Faculdade de Viçosa">FDV</acronym>
Semântica

A tag <table> foi criada para exibir dados tabulares e não pra
estruturar sites;

Usar a tag <br /> para simular parágrafos, onde a tag <p> poderia
ser usada;

Usar qualquer outra tag que não seja os headings (títulos) como
h1, h2, h3, etc, para declarar títulos; e

Quando usar uma citação em um texto coloque entre a tag <cite>.
Microformatos

Microformatos são um conjunto de formatos abertos projetados
para adicionar semântica em qualquer documento XML,
especialmente HTML/XHTML;

http://microformats.org/wiki/Main_Page;

Aplicações, como buscadores, podem extrair informações
específicas de páginas que usam microformatos, como informações
de contato, evento, licença, etc; e

A função destas especificações é enriquecer a informação inserida
em páginas web com meta informação;
Então o que seria
web 1.0 e web 2.0?
Web 1.0
Web 2.0
Sites pessoais
Page Views
Domain Name Speculation
DoubleClick
Britannica Online
Publicação
CMS’s
Diretórios (taxonomias)
mp3.com
blogging
Preço por Click
SEO
Google AdSense
Wikipedia
iMasters (articulista)
Wikis
Tagging ("folksonomy")
P2P
Apresento-lhes o AJAX
AJAX


Asynchronous JavaScript And XML; e
Usando XML HTTP Request para aplicações Web sem reload.
AJAX: O servidor fornece
dados, e não conteúdo
AJAX: O servidor fornece
dados, e não conteúdo
AJAX: O servidor fornece
dados, e não conteúdo
AJAX

Um pouco de história:
 O grande problema;
 Aplicações Web-Based;
 Os frames;
 iFrames;
 O XHTML não aceita Frame nem iFrame;
 RIA;
 Applets Java;
 ActiveX (que provê um protocolo client-side que permite
comunicação HTTP com o servidor, chamado
"Microsoft.XMLHTTP"); e
 Outros Browsers também implementaram;
AJAX

Ajax é uma combinação de técnicas disponíveis desde meados do
ano 2000, consistindo de:





(X)HTML, Javascript e CSS ;
Document Object Model (DOM); e
XMLHttpRequest.
JavaScript não-obstrusivo; e
Em suma: usem a tecnologia com responsabilidade.
Ajax: Pontos Fortes





Maior Interatividade nas aplicações;
Redução do consumo de banda;
Redução de processamento no servidor;
Não é proprietário; e
Portabilidade.
Ajax: Pontos Fracos






Capacidades limitadas;
Performance do cliente;
Comportamento dos botões Back e Forward;
Bookmarking (Unique URL);
Latência da rede; e
Requer conectividade permanente.
Meu primeiro AJAX

Depois de toda essa teoria, finalmente podemos fazer algo prático
com nosso mais novo amigo, o XMLHTTPRequest;
Construindo o sistema
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cadastro de Pedido</title>
</head>
<body>
<h1>Cadastro de Pedido</h1>
<div id="CadPedGeral">
<div id="CadPedidoLeft"></div>
<div id="CadPedidoRight">
<div id="CodPedidoRightTop"></div>
<div id="CodPedidoRightMeio"></div>
<div id="CodPedidoRightBotton"></div>
</div>
</div>
</body>
</html>
A linha
<div class="linha">
<div class="fields_name">Código: </div>
<div class="fields_input">
<input type="text" id="codpedido" name="codpedido" value="" />
</div>
</div>
Os produtos
<div id="CodPedidoRightTop">
<div class="codigoProd">Codigo</div>
<div class="nomeProd">Produto</div>
<div class="qtdProd">Qtd</div>
<div class="valorProd">Valor</div>
<br />
<div id=“itens"></div>
</div>
Os botões
<div id="CodPedidoRightMeio"></div>
<div id="CodPedidoRightBotton">
<input type="button" id="novo" name="novo" value="Novo" />
<input type="button" id="pesquisar" name="pesquisar" value="Pesquisar" />
<input type="button" id="excluir" name="excluir" value="Excluir" />
</div>
Obá... CSS

Ufa! Terminamos a primeira camada;

Podemos testar no browser, o que fizemos até agora, para vermos como
ficou a nossa primeira camada;

É hora da diversão: CSS; e

Vamos começar a dar vida a nosso sistema.
Configurando o CSS
<link rel="stylesheet" type="text/css" href="estilos.css" />
body{}
h1{}
.linha{}
.fields_name{}
.fields_input{}
#CadPedGeral{}
#CadPedidoLeft{}
#CadPedidoRight{}
#CodPedidoRightTop{}
#CodPedidoRightMeio{}
#CodPedidoRightBotton{}
Configurando o CSS
body{
font-family: Helvetica, Verdana, Arial, sans-serif;
font-size:80%;
padding:0;
margin:0;
}
h1{
font-size:12px;
font-weight:bold;
color:#3e72a4;
padding:20px;
}
Configurando o CSS
.linha{
width:250px;
clear:both;
}
.fields_name{
float:left;
font-weight:bold;
text-align:right;
width:80px;
padding-bottom:5px;
}
Configurando o CSS
.fields_input{
float:left;
width:250px;
padding-left:5px;
padding-bottom:5px;
}
#CadPedGeral{
float:left;
background-color:#EEEEEE;
height:350px;
width:620px;
padding:20px;
}
Configurando o CSS
#CadPedidoLeft{float:left; width:340px; }
#CadPedidoRight{ float:left; width:260px; }
#CodPedidoRightTop{
font-size:11px;
float:left;
background-color:#CCCCCC;
height:150px;
width:270px;
padding:10px;
overflow:auto;
}
Configurando o CSS
#CodPedidoRightMeio{
float: left;
width: 250px;
height: 160px;
}
#CodPedidoRightBotton{
float: right;
}
#codigoProd{
float:left;
width:40px;
}
Configurando o CSS
#nomeProd{
float:left;
width:130px;
}
#qtdProd{
float:left;
width:30px;
}
#valorProd{
float: left;
width: 30px;
}
UFA!!!
Terminamos a 2ª Camada

Agora vamos testar como está o nosso sistema;

Veja que o sistema está medíocre;

Precisamos colocar comportamento;

Precisamos fazer o sistema funcionar; e

Vamos pensar em tudo: USABILIDADE e ACESSIBILIDADE.
O Comportamento
<script type="text/javascript" src="comportamento.js"></script>
function NovoCliente(){
limpacampos("frmCadastroCliente");
$.post("funcionalidades.php", {acao: "NovoCliente"}, function (retorno){
codigoNewCliente = retorno;
$("#codpedido").val(codigoNewCliente);
$.post("funcionalidades.php", {acao: "Produtos"}, function (retorno){
$("#printPodutos").html(retorno);
})
})
}
O Comportamento
function SalvarDadosCliente(campo){
codigo = $("#codpedido").val();
field = campo.name;
valor = campo.value;
$.post("funcionalidades.php",
{
acao: "SalvarDadosCliente",
codigo: codigo,
field: field,
valor: valor
})
}
O Comportamento
function Excluir(){
codigo = $("#codpedido").val();
$.post("funcionalidades.php",
{
acao: "Excluir",
codigo: codigo
},
function (retorno){
limpacampos("frmCadastroCliente");
$("#itens").html("");
$("#printPodutos").html("");
})
}
O Comportamento
function VerSinopse(produto){
$.post("funcionalidades.php",
{
acao: "VerSinopse",
produto: produto
},
function (retorno){
$("textarea[@name=descricao]").val(retorno);
})
}
O Comportamento
function AddProduto(){
produto = $("#produto").val();
cliente = $("#codpedido").val();
if (produto == 0){
alert("OPS! Você esqueceu de escolher um produto");
return false;
}else{
$.post("funcionalidades.php",
{
acao: "AddProduto",
produto: produto,
cliente: cliente
},
function (retorno){
$("#itens").html(retorno);
}
)
}
}
O Comportamento
function ExcluirProduto(id){
$.post("funcionalidades.php",
{
acao: "ExcluirProduto",
id: id
},
function (retorno){
$("#"+id).hide();
}
)
}
Referências Bibliográficas

del.icio.us/serginhosant/webstandards
Download

Web Standard