Você está na página 1de 12

As Trs Camadas da Web

Era uma vez... Um rei! meus pequenos leitores diriam imediatamente. No,
crianas, vocs esto errados. Era uma vez um pedao de madeira...
As Aventuras de Pinquio
Voc pode fazer muita coisa sem JavaScript. Usando HTML (Hypertext Markup
1
Language) , possvel produzir documentos complexos que descrevem de maneira complicada o contedo de uma pgina e o significado desse contedo
nos mnimos detalhes. Usando CSS (Cascading Style Sheets), voc pode apresentar esse contedo de muitas maneiras, com variaes to sutis quanto uma
nica cor ou to notveis quanto substituir texto por uma imagem.
Contudo, independentemente de quanto voc melhore o aspecto, HTML e CSS
s podem chegar beleza esttica de um manequim de loja de departamentos
ou, na melhor das hipteses, a uma monstruosidade animada eletronicamente
que cambaleia quando algo se move nas proximidades. Com JavaScript, voc
pode dar vida a esse boneco desajeitado, elevando-se, como seu criador, de um
humilde vendedor a mestre em Web design!

Neste livro, vamos nos referir a HTML e a XHTML apenas como HTML. O que voc escolhe ca
por sua conta e no tem muito a ver com JavaScript. O cdigo HTML que apresentaremos neste
livro ser XHTML 1.0 Strict vlido.

26 S JavaScript

Mas o fato de sua nova criao ter o caminhar gracioso de uma modelo ou o
andar arrastado do monstro do Dr. Frankenstein depende tanto da qualidade de
suas origens HTML e CSS quanto do cdigo JavaScript que deu vida a ela.
Portanto, antes de aprendermos a operar milagres, vamos examinar como construmos sites de boa aparncia por dentro e por fora e ver como JavaScript se
encaixa nesse quadro.

Separe-os
No faz muito tempo, Web designers profissionais empilhavam alegremente
cdigo HTML, CSS e JavaScript em um nico arquivo, davam a ele o nome de
2
index.html e chamavam isso de pgina Web. Ainda possvel fazer isso, mas
esteja preparado para ouvir xingamentos dos seus colegas.

Em algum momento, os Web designers perceberam que o cdigo que escrevem ao


fazer uma pgina Web faz trs coisas fundamentais:

Ou default.htm, de acordo com o padro Microsoft.

As Trs Camadas da Web

27

Descreve o contedo da pgina.


Especifica a apresentao desse contedo.
Controla o comportamento do contedo.
Eles tambm perceberam que manter esses trs tipos de cdigo separados, como
representado na Figura 1.1, facilitava o trabalho e ajudava a criar pginas Web
que funcionavam melhor sob condies adversas, como quando os usurios esto com JavaScript desativado em seus navegadores.
Os viciados em computador sabem disso h anos e at deram um nome para esse
princpio: a separao de preocupaes.

Apresentao

Contedo

Comportamento

Figura 1.1 Separao de preocupaes.

Mas perceber isso uma coisa, fazer outra especialmente se voc no viciado em computador. Eu sou viciado em computador e fico tentado a fazer a coisa
errada o tempo todo.
Estou editando alegremente o cdigo HTML que descreve o contedo de uma
pgina Web, quando subitamente comeo a pensar em como aquele texto ficaria
bem se tivesse um sombreado cinza diferente, se fosse deslocado um pouco para
a esquerda e se tivesse no fundo aquela fotocpia hilria de meu rosto que fiz
na ltima festa do escritrio da SitePoint. Distrado que sou, quero fazer essas
alteraes imediatamente.

28 S JavaScript

Agora, o que mais fcil: abrir um arquivo CSS separado para modificar a folha
de estilos da pgina ou apenas digitar essas propriedades de estilo no cdigo
HTML que j estou editando?
Assim como se comportar nas funes do trabalho, manter os tipos de cdigo
que voc escreve separados exige disciplina. Uma vez que voc entenda as vantagens disso, poder aplicar a fora de vontade necessria para se manter no modo
correto e apropriado de fazer as coisas.

Trs camadas
Manter diferentes tipos de cdigo o mais separado possvel recomendvel em
qualquer tipo de programao. Isso torna mais fcil reutilizar partes desse cdigo
em projetos futuros, reduz a quantidade de cdigo duplicado que voc acaba escrevendo e facilitar encontrar e corrigir problemas meses e anos mais tarde.
No que diz respeito Web, h mais um motivo para manter o cdigo separado:
isso permite satisfazer as muitas maneiras diferentes pelas quais as pessoas acessam as pginas Web.
Dependendo do seu pblico, a maioria de seus visitantes pode utilizar navegadores desktop bem equipados, com suporte de ponta para CSS e JavaScript, mas
muitos podem estar sujeitos a polticas de TI corporativas que os obrigue a utilizar navegadores mais antigos ou a navegar com certos recursos (como JavaScript)
desativados.
Os usurios deficientes visuais frequentemente navegam usando software leitor
ou ampliador de tela e, para eles, seu projeto visual refinado pode mais atrapalhar do que ajudar.
Alguns usurios nem mesmo visitaro seu site, preferindo ler feeds de contedo
em RSS ou formatos semelhantes, se voc os oferecer. Na hora de construir esses
feeds, voc desejar enviar o contedo HTML para esses usurios sem qualquer
lixo JavaScript ou CSS.
O segredo para favorecer a maior gama possvel de visitantes de seu site pensar
na Web em termos de trs camadas, que convenientemente correspondem aos
trs tipos de cdigo mencionados anteriormente. Essas camadas esto ilustradas
na Figura 1.2.

As Trs Camadas da Web

29

nto)
e
m
a
t
por Script

Com ( Java

ta) o
n
e
s
e
Apr (CSS

Riqueza da
experincia
do usurio

dMoL)
e
t
n
o
C (HT
Figura 1.2 As trs camadas da Web.

Ao construir um site, trabalhamos nessas camadas de baixo para cima:


1. Comeamos produzindo o contedo no formato HTML. Essa a camada de
base, que qualquer visitante, usando qualquer tipo de navegador, deve ser
capaz de ver.
2. Feito isso, podemos nos concentrar em melhorar a aparncia do site, adicionando uma camada de informaes de apresentao utilizando CSS. Agora o
site ter boa aparncia para os usurios exibirem estilos CSS.
3. Finalmente, podemos usar JavaScript para introduzir uma camada a mais de
interatividade e comportamento dinmico, que tornar o site mais fcil de
usar em navegadores equipados com JavaScript.
Se mantivermos o cdigo HTML, CSS e JavaScript separados, ser mais fcil garantir que a camada de contedo permanea legvel em ambientes de navegao
onde as camadas de apresentao e/ou comportamento no conseguem operar.
Essa estratgia de comear embaixo para o Web design conhecida como aperfeioamento progressivo.
Veremos cada uma dessas camadas isoladamente para saber como manter essa
separao de cdigo da melhor maneira possvel.

30 S JavaScript

HTML para contedo


Tudo que necessrio para ler e entender o contedo de uma pgina Web pertence ao cdigo HTML dessa pgina nada mais, nada menos. Simples assim.
Os Web designers ficam em apuros quando se esquecem do princpio SE3 e
comprimem informaes de contedo no cdigo HTML ou, alternativamente,
movem parte do contedo da pgina para o cdigo CSS ou JavaScript dessa
pgina.
Um exemplo comum de informao que no contedo colocado em pginas
HTML de apresentao cdigo HTML que descreve como o contedo deve parecer quando exibido no navegador. Isso pode incluir tags HTML antigas, como
<b>, <i>, <u>, <tt> e <font>:
<p>Faa o que for, <a href="666.html"><font color="red">mas no
clique neste link</font></a>!</p>

Isso pode assumir a forma de cdigo CSS em linha aplicado com o atributo
style:
<p>Faa o que for, <a href="666.html" style="color: red;">mas no
clique neste link</a>!</p>

Isso tambm pode incluir a vergonha secreta de muitos Web designers bem-intencionados estilos CSS aplicados com nomes de classe de apresentao:
<p>Faa o que for, <a href="666.html" class="red">mas no clique
neste link</a>!</p>

Nomes de classe de apresentao?


Se esse ltimo exemplo lhe pareceu correto, voc no est sozinho, mas definitivamente mau agouro. Se voc decidir posteriormente que deseja que o link seja amarelo, estar
condenado a atualizar o nome da classe e os estilos CSS aplicados a ele ou a conviver com
o constrangimento de ter uma classe chamada red (vermelho) que na verdade tem o
estilo amarelo (yellow). Isso vai tornar seu rosto amarelo ou melhor, vermelho!

Simplique, Estpido.

As Trs Camadas da Web

31

Em vez de incorporar informaes de apresentao no cdigo HTML, voc deve


se concentrar no motivo da ao por exemplo, voc quer que um link seja exibido em uma cor diferente. O link importante? Considere coloc-lo dentro de
uma tag que descreva a nfase que voc deseja dar a ele:
<p>Faa o que for, <em><a href="evil.html">mas no clique neste
link</a></em>!</p>

O link um aviso? HTML no tem uma tag para descrever um aviso (warning),
mas voc poderia escolher um nome de classe CSS que transmitisse essa informao:
<p>Faa o que for, <a href="evil.html" class="warning">mas no clique
neste link</a>!</p>

Evidentemente, voc pode levar essa estratgia longe demais. Alguns designers
confundem tags com <h1> como se fosse de apresentao e tentam remover esse
cdigo de apresentao do cdigo HTML:
<p class="heading"> Um cabealho com crise de identidade</p>

Na verdade, a informao de apresentao que voc deve manter fora do documento a fonte, o tamanho e a cor com que um cabealho (heading) deve ser
exibido. O fato de um texto ser um cabealho faz parte do contedo e, como tal,
deve ser refletido no cdigo HTML. Assim, o cdigo a seguir est perfeitamente
correto:
<h1>Um cabealho em paz consigo mesmo</h1>

Em resumo, o cdigo HTML deve fazer o mximo para transmitir o significado


(ou semntica) do contedo da pgina, enquanto evita descrever como ele deve
parecer. Os nerds de padres Web chamam o cdigo HTML que faz isso de marcao semntica.
A escrita de marcao semntica permite que seus arquivos HTML sejam significativos como documentos. As pessoas que por qualquer motivo no possam
ler esses documentos examinando-os em um navegador Web desktop normal,
podero entend-los melhor desse modo. Os usurios deficientes visuais, por
exemplo, podero usar software auxiliar, como leitores de tela, para ouvir o que
est escrito na pgina. Assim, quanto mais claramente seu cdigo HTML descrever o significado do contedo, mais fcil ser entend-lo.

32 S JavaScript

O melhor de tudo, entretanto, que a marcao semntica permite aplicar novos


estilos (apresentao) e recursos interativos (comportamento) sem que seja necessrio fazer muitas (ou, em alguns casos, todas!) alteraes no cdigo HTML.

CSS para apresentao


Obviamente, se o contedo de uma pgina deve estar inteiramente contido dentro do cdigo HTML, seu estilo ou apresentao deve ser totalmente descrito
no cdigo CSS aplicado na pgina.
Com todo o trabalho que voc teve para manter seu cdigo HTML livre de cdigo
de apresentao e rico em semntica, seria um vexame bagunar esse arquivo,
enchendo-o de trechos de cdigo CSS.
Como voc deve saber, os estilos CSS podem ser aplicados em suas pginas de
trs maneiras:
Estilos em linha
<a href="evil.html" style="color: red;">

Os estilos em linha so tentadores pelos motivos que explicamos anteriormente: voc pode aplic-los no contedo medida que o cria, sem precisar
trocar de mecanismo e editar uma folha de estilos separada. Porm, como
vimos na seo anterior, voc desejar evitar os estilos em linha se quiser
manter seu cdigo HTML significativo para aqueles que no podem v-los.
Estilos incorporados
<style type="text/css">
.warning {
color: red;
}
</style>

<a href="evil.html" class="warning">

Os estilos incorporados mantm sua marcao limpa, mas vinculam seus estilos a um nico documento. Na maioria dos casos, voc desejar compartilhar
seus estilos por vrias pginas de seu site; portanto, melhor evitar essa estratgia tambm.

As Trs Camadas da Web

33

Estilos externos
<link rel="stylesheet" href="styles.css" />

<a href="evil.html" class="warning">

styles.css
.warning {
color: red;
}

Os estilos externos so os melhores, pois permitem que voc compartilhe estilos entre vrios documentos, reduzem o volume de cdigo que os navegadores precisam baixar e tambm permitem modificar a aparncia de seu site sem
o trabalho de editar HTML.
Mas voc sabia de tudo isso, certo? Afinal, este um livro sobre JavaScript;
portanto, vamos falar sobre o cdigo JavaScript que est em suas pginas.

JavaScript para comportamento


Assim como acontece com CSS, voc pode adicionar JavaScript em suas pginas
Web de vrias maneiras:
Voc pode incorporar cdigo JavaScript diretamente no contedo HTML:
<a href="evil.html" onclick="cdigo JavaScript aqui">

Voc pode incluir cdigo JavaScript no inicio do documento HTML, em uma


tag <script>:
<script type="text/javascript"><!--//--><![CDATA[//><!-cdigo JavaScript aqui
//--><!]]></script>

<a href="evil.html" class="warning">

34 S JavaScript

CDATA?
Se voc estiver se perguntando que geringona essa depois da tag <script> e que precede a tag </script>, isso o que necessrio para incorporar legitimamente cdigo
JavaScript em um documento XHTML sem confundir os navegadores Web que no entendem XHTML (como o Internet Explorer).
Se voc escrever sua pgina com HTML em vez de XHTML, poder se dar bem com esta
sintaxe muito mais simples:
<script type="text/javascript">
Cdigo JavaScript aqui
</script>

Voc pode colocar seu cdigo JavaScript em um arquivo separado e, ento,


vincular esse arquivo a quantos documentos HTML desejar:
<script type="text/javascript" src="script.js"></script>

<a href="evil.html" class="warning">

script.js (excerto)
cdigo JavaScript aqui

Adivinhe que mtodo voc deve usar.


Escrever cdigo JavaScript que melhora a utilizao sem congestionar o documento (ou documentos) HTML em que aplicado, sem deixar de fora os usurios
que esto com JavaScript desativado em seus navegadores e sem interferir em
outro cdigo JavaScript que possa estar aplicado na mesma pgina, chamado
de script no invasivo.
Infelizmente, embora muitos desenvolvedores Web profissionais tenham percebido as vantagens de manter o cdigo CSS em arquivos separados, ainda existe
muito cdigo JavaScript misturado em HTML por a. Mostrando, neste livro, a
maneira correta de usar JavaScript, esperamos ajudar a mudar isso.

As Trs Camadas da Web

35

A maneira certa
Ento, qual a verdadeira importncia de tudo isso? Afinal, as pessoas tm construdo sites com HTML, CSS e JavaScript misturadas h anos, e, para a maioria
das pessoas que navegam na Web, esses sites tm funcionado.
Quando voc aprende JavaScript, mais do que nunca importante saber fazer da
maneira correta, com certeza. De longe, JavaScript a mais poderosa das trs linguagens que voc usar para projetar sites e, como tal, ela oferece uma liberdade
sem precedentes, de modo que possvel fazer uma baguna completa.
Como exemplo, se voc gostar muito, muito de JavaScript, poder chegar a ponto
de colocar tudo contedo, apresentao e comportamento no cdigo JavaScript. J vimos isso e no nada bonito especialmente quando aparece um
navegador com JavaScript desativado.
Ainda mais importante o fato de que JavaScript a nica dessas trs linguagens que tem a capacidade de travar o navegador, tornando-o sem resposta para
4
o usurio.
Portanto, no restante deste livro, faremos o mximo para mostrar a voc a maneira certa de usar JavaScript, no apenas porque isso mantm seu cdigo organizado, mas porque ajuda a manter a Web funcionando da maneira que foi pensada
tornando o contedo acessvel para o mximo de pessoas possvel, independentemente do navegador que utilizem.

Bibliotecas JavaScript
Conforme mencionamos, uma das vantagens de manter os diferentes tipos de
cdigo separados que isso torna mais fcil pegar cdigo escrito para um site e
reutiliz-lo em outro. Certos manacos por JavaScript (que sero chamados daqui
em diante de pessoas) montaram vastas bibliotecas de cdigo JavaScript til e
no invasivo que voc pode baixar gratuitamente e usar em seus sites.
Ao longo deste livro, construiremos cada um dos exemplos a partir do zero
todo o cdigo JavaScript necessrio pode ser encontrado aqui, nestas pginas.
Entretanto, como nem sempre h tempo de fazer isso no mundo real e como as
bibliotecas esto se tornando rapidamente uma parte importante no cenrio Ja-

Vamos mostrar um exemplo disso no Captulo 7.

36 S JavaScript

vaScript, veremos tambm como as bibliotecas JavaScript populares so eficientes em determinados casos.
Eis as bibliotecas que usaremos neste livro:
Prototype

http://www.prototypejs.org/

script.aculo.us

http://script.aculo.us/

Yahoo! User Interface Library (YUI)

http://developer.yahoo.com/yui/

Dojo

http://dojotoolkit.org/

jQuery

http://jquery.com/

Mootools

http://mootools.net/

Nem todas as bibliotecas so criadas da mesma maneira


Cuidado com sites que oferecem trechos de cdigo JavaScript para copiar e colar em suas
pginas Web a fim de obter um efeito especfico. Existe muito cdigo gratuito por a, mas
nem tudo bom.
Em geral, as boas bibliotecas vm na forma de arquivos JavaScript (.js) que voc pode
vincular em suas pginas de forma no invasiva, em vez de colar JavaScript diretamente
no cdigo HTML.
Se voc no tiver certeza que uma biblioteca JavaScript em particular boa ou ruim,
pea ajuda nos fruns da SitePoint5 ou fique apenas com as bibliotecas mencionadas neste livro todas elas so muito boas.

Vamos comear!
Chega de conversa voc comprou este livro para aprender JavaScript, certo? (Se
no foi por isso, ficar um pouco desapontado.) HTML e CSS puras so legais,
mas hora de mergulhar na terceira camada da Web: o comportamento.
Vire a pgina e se prepare para comear a usar cdigo JavaScript interessante (e
no invasivo).

http://www.sitepoint.com/forums/