Desenvolvimento de
Grandes Aplicações Web
Kyle Loudon
Introdução de Nate Koechley
Novatec
Authorized Portuguese translation of the English edition of titled Developing Large Web Applications, First Edition,
ISBN 978-0-596-80302-5 © 2010, Yahoo! Inc. This translation is published and sold by permission of O'Reilly
Media, Inc., the owner of all rights to publish and sell the same.
Tradução em português autorizada da edição em inglês do título Developing Large Web Applications, First Edition,
ISBN 978-0-596-80302-5 © 2010, Yahoo! Inc. Esta tradução é publicada e vendida com a permissão da O'Reilly
Media, Inc., detentora de todos os direitos para publicação e venda desta obra.
© Novatec Editora Ltda. 2010.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo
parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora.
Editor: Rubens Prates
Tradução: Rafael Zanolli
Revisão gramatical: Patrizia Zagni
Editoração eletrônica: Camila Kuwabata e Carolina Kuwabata
ISBN: 978-85-7522-251-5
Histórico de impressões:
Setembro/2010
Primeira edição
Novatec Editora Ltda.
Rua Luís Antônio dos Santos 110
02460-000 – São Paulo, SP – Brasil
Tel.: +55 11 2959-6529
Fax: +55 11 2950-8869
E-mail: [email protected]
Site: www.novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec
Dados
Internacionais de Catalogação na Publicação
(Câmara Brasileira do Livro, SP, Brasil)
Loudon, Kyle
Desenvolvimento de grandes aplicações Web /
Kyle Loudon ; tradução Rafael Zanolli. -- São
Paulo : Novatec Editora ; Sebastopol, Calif :
O'Reilly, 2010.
Título original: Developing large Web
applications.
ISBN 978-85-7522-251-5
1. HTML (Hyper Text Markup Language) 2.
Internet (Rede de computadores) 3. Web sites I.
Título.
10-08752
CDD-004.67
Índices para catálogo sistemático:
1. Sites na Web : Criação : Internet : Redes de
computadores : Processamento de dados
004.67
2. Web sites : Criação : Internet : Redes
de computadores : Processamento de dados
004.67
ORGF20100903
(CIP)
Sumário
Introdução............................................................................................................................................9
Prefácio..............................................................................................................................................11
Capítulo 1 ■ Princípios........................................................................................................................17
Gerenciamento da complexidade...........................................................................................................17
Componentes modulares.......................................................................................................................19
Atingindo a modularidade............................................................................................................. 20
Benefícios da modularidade............................................................................................................21
Dez princípios para grandes aplicações web...........................................................................................21
Capítulo 2 ■ Orientação a objetos.........................................................................................................23
Fundamentos da POO......................................................................................................................... 24
Por que a orientação a objetos?............................................................................................................. 25
Diagramas de classe UML.................................................................................................................... 26
Generalização............................................................................................................................... 26
Associação.................................................................................................................................... 27
Modelagem de página web................................................................................................................... 27
Definição de tipos de páginas......................................................................................................... 27
Definição dos tipos de módulos..................................................................................................... 28
Escrevendo o código............................................................................................................................ 29
Obtenção da modularidade.................................................................................................................. 30
PHP orientado a objeto......................................................................................................................... 31
Classes e interfaces......................................................................................................................... 31
Herança em PHP........................................................................................................................... 36
JavaScript orientado a objetos.............................................................................................................. 39
Objetos......................................................................................................................................... 39
Herança em JavaScript................................................................................................................... 42
Capítulo 3 ■ HTML em larga escala.......................................................................................................45
HTML modular................................................................................................................................... 46
Um mau exemplo: a utilização de uma tabela e de marcação de apresentação.................................. 46
Um exemplo melhorado: utilizando CSS........................................................................................ 48
O melhor exemplo: HTML com significado semântico.................................................................... 50
Benefícios de um bom HTML........................................................................................................ 54
Tags HTML......................................................................................................................................... 57
Tags HTML ruins.......................................................................................................................... 57
Boas tags HTML . ......................................................................................................................... 58
IDs, classes e nomes....................................................................................................................... 60
Convenções de nomenclatura..........................................................................................................61
5
6
Desenvolvimento de Grandes Aplicações Web
XHTML...............................................................................................................................................61
Benefícios do XHTML....................................................................................................................61
Diretrizes para XHTML................................................................................................................. 62
RDFa................................................................................................................................................... 65
Trios RDFa.................................................................................................................................... 66
Aplicação da RDFa.........................................................................................................................67
HTML 5...............................................................................................................................................71
Capítulo 4 ■ CSS em larga escala..........................................................................................................73
CSS modular........................................................................................................................................74
Inclusão das CSS............................................................................................................................74
Aplicação das CSS......................................................................................................................... 77
Especificidade e importância......................................................................................................... 80
Escopos com CSS...........................................................................................................................81
Formatos-padrão de módulos........................................................................................................ 87
Técnicas de posicionamento................................................................................................................. 90
Modelo de caixa CSS..................................................................................................................... 90
Fluxo do documento..................................................................................................................... 92
Posicionamento relativo................................................................................................................. 93
Posicionamento absoluto............................................................................................................... 93
Flutuação...................................................................................................................................... 95
Layouts e containers............................................................................................................................ 96
Exemplos de layouts...................................................................................................................... 97
Exemplos de containers................................................................................................................105
Outras práticas...................................................................................................................................108
CSS de reset, ou reconfiguração, do navegador...............................................................................108
Normalização das fontes................................................................................................................111
Capítulo 5 ■ JavaScript em larga escala..............................................................................................113
JavaScript modular..............................................................................................................................114
Inclusão do JavaScript....................................................................................................................114
Escopos com JavaScript................................................................................................................ 116
Trabalho com o DOM......................................................................................................................... 119
Métodos comuns do DOM........................................................................................................... 119
Bibliotecas DOM populares..........................................................................................................120
Como trabalhar com eventos...............................................................................................................126
Normalização da manipulação de eventos.....................................................................................126
Um mau exemplo: dados globais dentro de manipuladores de eventos............................................127
Um bom exemplo: dados de objeto dentro de manipuladores de eventos........................................128
Aplicações orientadas a eventos.....................................................................................................129
Trabalho com animações.....................................................................................................................130
Animação de movimento..............................................................................................................130
Animação de tamanho...................................................................................................................131
Transição de cores........................................................................................................................ 132
Um exemplo: listas de seleção encadeada...................................................................................... 133
Capítulo 6 ■ Gerenciamento de dados................................................................................................143
Módulos dinâmicos............................................................................................................................144
Gerenciadores de dados...................................................................................................................... 145
Criação de gerenciadores de dados................................................................................................148
Extensão dos gerenciadores de dados............................................................................................150
Sumário
7
Dados que utilizam SQL como fonte.................................................................................................... 152
Um exemplo de SQL..................................................................................................................... 152
Dados que utilizam XML como fonte...................................................................................................156
Um exemplo em XML...................................................................................................................156
Dados de web services.........................................................................................................................160
Dados no formato JSON..................................................................................................................... 161
Cookies e formulários.........................................................................................................................162
Gerenciamento de dados em cookies.............................................................................................162
Gerenciamento dos dados de formulários......................................................................................163
Capítulo 7 ■ PHP em larga escala.......................................................................................................165
Páginas web modulares.......................................................................................................................166
Geração de páginas em PHP......................................................................................................... 167
Trabalho com páginas..........................................................................................................................171
Interface pública para a classe Page................................................................................................171
Interface abstrata para a classe Page.............................................................................................. 175
Implementação da classe Page....................................................................................................... 179
Extensão da classe Page................................................................................................................190
Trabalhando com módulos.................................................................................................................196
Interface pública para a classe Module..........................................................................................196
Interface abstrata para a classe Module.........................................................................................196
Implementações da classe Module................................................................................................198
Extensão da classe Module...........................................................................................................199
Layouts e containers........................................................................................................................... 213
Considerações especiais...................................................................................................................... 216
Manipulação de variações de módulos.......................................................................................... 216
Várias instâncias de um módulo.................................................................................................... 217
JavaScript e CSS dinâmicos........................................................................................................... 218
Implementação de módulos aninhados......................................................................................... 219
Capítulo 8 ■ Ajax em larga escala.......................................................................................................221
No navegador.....................................................................................................................................222
Gerenciamento de conexões..........................................................................................................222
Utilização de bibliotecas Ajax........................................................................................................225
No servidor........................................................................................................................................ 231
Formatos de transmissão.............................................................................................................. 231
Servidor proxy..............................................................................................................................234
Ajax modular...............................................................................................................................236
MVC e Ajax........................................................................................................................................238
Utilização do Ajax com o MVC.....................................................................................................239
Interface pública para o objeto Model...........................................................................................245
Implementação do objeto Model...................................................................................................246
Interface pública para o objeto View..............................................................................................249
Interface abstrata para o objeto View.............................................................................................249
Implementação do objeto View.....................................................................................................249
Interface pública para o objeto Connect........................................................................................250
Interface abstrata para o objeto Connect....................................................................................... 251
Implementação do objeto Connect................................................................................................252
Controladores..............................................................................................................................255
Um exemplo de Ajax com MVC: Listas accordion..........................................................................255
8
Desenvolvimento de Grandes Aplicações Web
Capítulo 9 ■ Desempenho..................................................................................................................263
Oportunidades de armazenamento em cache...................................................................................... 264
Armazenamento em cache de CSS e JavaScript.............................................................................. 264
Armazenando módulos em cache..................................................................................................270
Armazenamento em cache para páginas........................................................................................274
Armazenamento em cache com Ajax.............................................................................................275
Utilização de cabeçalhos Expires.................................................................................................. 277
Gerenciamento do JavaScript...............................................................................................................278
Posicionamento do JavaScript.......................................................................................................278
Minificação do JavaScript.............................................................................................................278
Remoção de duplicatas................................................................................................................ 280
Distribuição de recursos...................................................................................................................... 281
Redes de entrega de conteúdo....................................................................................................... 281
Minimização das consultas DNS.................................................................................................. 282
Minimização das solicitações HTTP............................................................................................ 282
Controle sobre a métrica do site......................................................................................................... 286
Testes modulares................................................................................................................................ 288
Utilização de dados de testes........................................................................................................ 289
Criação de dados de testes........................................................................................................... 290
Capítulo 10 ■ Arquitetura de aplicação...............................................................................................293
Pensamento modular..........................................................................................................................293
Organização dos componentes............................................................................................................297
Arquitetura para o site inteiro.......................................................................................................297
Arquitetura de seção.................................................................................................................... 300
Arquitetura para as páginas.................................................................................................................302
Arquitetura e manutenção.................................................................................................................. 305
Reorganização da utilização dos módulos..................................................................................... 305
Adição de variações de módulos....................................................................................................307
Realização de alterações abrangentes............................................................................................. 310
Alterações nas fontes de dados...................................................................................................... 313
Exposição externa de módulos...................................................................................................... 316
Sobre o autor......................................................................................................................................326
Colofão..............................................................................................................................................326
Índice remissivo................................................................................................................................317
Download

Sumário - Novatec