No artigo anterior do Manual de jQuery Mobile explicamos qual é a estrutura da página básica e agora veremos que a multipágina não é mais que a união de várias páginas básicas em um mesmo arquivo HTML.
Talvez uma pessoa com conhecimentos avançados de jQuery possa estar decepcionada, ao ver como neste manual de jQuery Mobile não utilizamos ainda nenhum código Javascript. Se for assim, sinto muito, mas já aviso que esta situação vai ser mantida pelo menos durante mais artigos. Bom, se bem que é certo que nesta ocasião vamos poder ver em funcionamento efeitos dinâmicos, não é necessário utilizar Javascript para nada, porque muitos dos comportamentos básicos deste framework são configurados diretamente sobre o código HTML, por meio de diversos atributos com o prefixo "data-".
Para fazer a página básica já vimos que as divisões tinham um atributo "data-role" para indicar a estrutura da página, com seu cabeçalho, corpo e pé . Agora veremos outros atributos parecidos para indicar outras coisas sobre as páginas que estamos desenvolvendo.
Vimos que a página básica incluía uma serie de scripts Javascript e estilos CSS do framework, além de uma declaração META para definir a escala ou zoom com a que se deveria apresentar. Tudo isso permanece igual, o único que mudará será o corpo da página, onde colocaremos vários blocos data-role="page".
Vejamos uma união de vários blocos de páginas básicas.
<!-- PORTADA -->
<div data-role="page" id="portada">
<div data-role="header">
<h1>Titular de página portada</h1>
</div>
<div data-role="content">
<p>Fabrico guitarras de todas as cores</p>
<p>Podes ver <a href="#galeria">minhas guitarras</a></p>
<p>Podes <a href="#comprar" data-rel="dialog">comprar uma guitarra</a></p>
</div>
<div data-role="footer">
Pé de página
</div>
</div>
<!-- /PORTADA -->
<!-- GALERIA -->
<div data-role="page" id="galeria" data-title="Galeria de guitarras">
<div data-role="header">
<h1>Galeria de fotos de minhas guitarras</h1>
</div>
<div data-role="content">
<p>Podes ver todas as minhas guitarras</p>
<p><a href="#portada">voltar</a></p>
</div>
<div data-role="footer">
Pé de página
</div>
</div>
<!-- /GALERIA -->
<!-- COMPRAR -->
<div data-role="page" id="comprar" data-title="Comprar guitarras">
<div data-role="header">
<h1>Comprar guitarras</h1>
</div>
<div data-role="content">
<p>Serviço temporariamente indisponivel</p>
<p><a href="#portada">voltar</a></p>
</div>
<div data-role="footer">
Pé de página
</div>
</div>
<!-- /COMPRAR -->
Este site seria formado por três páginas distintas: "portada", "galeria" e "comprar". A pesar de estarem escritas no mesmo arquivo HTML, jQuery se encarregará de mostrá-las como se fossem páginas independentes. A navegação entre elas é realizada por links, como veremos a seguir.
<div data-role="page" id="portada">
Como vemos, foi colocado id="portada", com o que já tem um nome atribuído. Agora, se queremos fazer links dirigidos para esta portada, os criamos simplesmente como se fossem links internos. Para tanto colocamos o href="#portada", ou seja, exatamente como é feito com os links dentro da mesma página que conhecemos do HTML.
<a href="#portada">Ir para a portada</a>
O genial destes links é que, para passar de uma página a outra, jQuery Mobile produz uma transição automática, que faz com que uma página atual desapareça e entre a lincada com um efeito suavizado. Mais adiante explicaremos como configurar as transições entre páginas.
Em data-title podemos indicar o título que cada página tem do esquema de multipágina e jQuery Mobile se encarregará de atualizá-lo automaticamente quando se navegue nessa página. Podemos ver o título da subpágina de galeria:
<div data-role="page" id="galeria" data-title="Galeria de guitarras">
Assim vemos que, quando o usuário pressione um link que o leve a esta página, o titular da janela do navegador mudará de maneira automática para o indicado mediante data-title="Galeria de guitarras".
Em resumo. A primeira das páginas poderá ter o título que indiquemos no TITLE do documento HTML, mas se quisermos atribuir outros títulos diferentes a outras páginas da estrutura multipágina, deveremos fazê-lo através dos atributos data-title.
Todos estes atributos com prefixo data- são perfeitamente válidos na sintaxe HTML5, já que as especificações da linguagem permitem qualquer número de atributos que comecem pela cadeia "data-". Em HTML5 são utilizadas para embeber dados das aplicações web nas próprias etiquetas do HTML e jQuery Mobile os utiliza, como você pode ver, para configurar o funcionamento das páginas desenvolvidas com estas bibliotecas
Mais à frente veremos outros usos desta técnica para implementar diversos componentes de interfaces de usuário, configurar as transições entre páginas, o comportamento dos links, etc.
Como você poderá comprovar ao ver o exemplo em funcionamento, foram realizados dois tipos de comportamentos dinâmicos. Primeiro, as transições entre páginas, com um efeito de deslocamento suavizado. A seguir, a mudança automática do TITLE do documento, ao passar de uma página a outra. É simplesmente uma pequena amostra das possibilidades do framework e de como, a partir de mero código HTML, se podem configurar diversos dinamismos. Nem é preciso dizer que, se não baseássemos nossas aplicações em jQuery Mobile, realizar estes comportamentos dinâmicos exigiria usar bastante Javascript e lutar com as particularidades de cada dispositivo e navegador.