Padrões JavaScript
Descrição do livro
Recomenda-se que o leitor tenha experiência prévia em programação.
Qual é a melhor maneira de desenvolver uma aplicação em JavaScript? Este livro, ao apresentar inúmeros padrões e as melhores práticas no JavaScript, vai ajudá-lo a responder a essa pergunta. Se você for um desenvolvedor experiente e está tentando resolver problemas relacionados a objetos, funções, herança e outras categorias específicas à linguagem, as abstrações e os modelos de código deste guia são ideais — independentemente de você estar escrevendo uma aplicação JavaScript no lado do cliente, no lado do servidor ou uma aplicação desktop.
Escrito pelo especialista em JavaScript Stoyan Stefanov — técnico sênior do Yahoo! e arquiteto da YSlow 2.0, ferramenta de otimização de desempenho de páginas web —, Padrões JavaScript inclui diversos conselhos práticos para implementar cada padrão discutido, além de vários exemplos práticos. Você também aprenderá o que são antipadrões: abordagens de programação que causam mais problemas do que os resolvem.
Explore hábitos úteis para escrever código JavaScript de alta qualidade, evitando globais, usando declarações de var único e muito mais.
Aprenda por que os padrões de notação literal são alternativas simples para as funções construtoras.
Descubra diferentes maneiras de definir uma função em JavaScript.
Crie objetos que vão além dos padrões básicos de uso de objetos literais e funções construtoras.
Aprenda sobre as opções disponíveis para reutilização de código e herança em JavaScript.
Estude exemplos de abordagens JavaScript para padrões de projeto famosos, como Singleton, Fábrica (Factory), Decorador (Decorator) e muitos outros.
Examine os padrões que se aplicam especificamente ao ambiente de navegador no lado do cliente.
“Stoyan escreveu o guia prático definitivo para desenvolvedores JavaScript que trabalham em aplicações web de larga escala”, Ryan Grove, engenheiro da biblioteca YUI, Yahoo!
Ver menos ▲Sumário
Sumário
- Prefácio
- Capítulo 1 ■ Introdução
- Padrões
- JavaScript: conceitos
- Orientado a objeto
- Sem classes
- Protótipos
- Ambiente
- ECMAScript 5
- JSLint
- Objeto console
- Capítulo 2 ■ Conceitos básicos
- Escrevendo código manutenível
- Minimizando globais
- O problema das variáveis globais
- Efeitos colaterais de quando se esquece var
- Acessando o objeto global
- Padrão var único (single var)
- Hoisting: o problema das declarações var espalhadas
- Loops for
- Loops for-in
- (Não) expandir protótipos embutidos
- Padrão switch
- Evitar conversões de tipo implícitas
- Evite eval()
- Conversão de números com parseInt()
- Convenções de programação
- Endentação
- Chaves
- Localização da chave de abertura
- Espaços em branco
- Convenções de nomeação
- Construtores iniciados com maiúsculas
- Separação de palavras
- Outros padrões de nomeação
- Escrevendo comentários
- Escrevendo documentos de API
- Exemplo no YUIDoc
- Escrevendo para ser lido
- Revisões por pares
- Minificando (n)a produção
- Execute o JSLint
- Resumo
- Capítulo 3 ■ Literais e construtores
- Objeto literal
- Sintaxe de objeto literal
- Objetos a partir de um construtor
- Pegadinha do construtor Object
- Funções construtoras customizadas
- Valores de retorno dos construtores
- Padrões que impõem o uso de new
- Convenção de nomeação
- Usando that
- Construtor autoinvocável
- Array literal
- Sintaxe de array literal
- Curiosidades do construtor Array()
- Verificando a “natureza” de um array
- JSON
- Trabalhando com o JSON
- Expressão regular literal
- Sintaxe literal de expressão regular
- Encapsuladores primitivos
- Objetos de erro
- Resumo
- Objeto literal
- Capítulo 4 ■ Funções
- Conceitos básicos
- Esclarecimentos sobre a terminologia
- Declarações versus expressões: nomes e hoisting
- Propriedade name da função
- Hoisting de função
- Padrão callback
- Um exemplo de callback
- Callbacks e escopo
- Listeners de eventos assíncronos
- Intervalos (timeouts)
- Callbacks em bibliotecas
- Retornando funções
- Funções autodefiníveis
- Funções imediatas
- Parâmetros de uma função imediata
- Valores retornados de funções imediatas
- Benefícios e utilização
- Inicialização de um objeto imediato
- Ramificação em tempo de inicialização
- Propriedades de função – Um padrão de memoização
- Objetos de configuração
- Curry
- Aplicação de função
- Aplicação parcial
- Currying
- Quando usar o currying
- Resumo
- Conceitos básicos
- Capítulo 5 ■ Padrões de criação de objetos
- Padrão de namespace
- Função-namespace de propósito geral
- Declarando dependências
- Propriedades e métodos privados
- Membros privados
- Métodos privilegiados
- Falhas na privacidade
- Objetos literais e privacidade
- Protótipos e privacidade
- Revelando funções privadas como métodos públicos
- Padrão de módulo
- Padrão de módulo de revelação
- Módulos que criam construtores
- Importando globais para dentro de um módulo
- Padrão de sandbox
- Um construtor global
- Adicionando módulos
- Implementando o construtor
- Membros estáticos
- Membros estáticos públicos
- Membros estáticos privados
- Constantes de objeto
- Padrão de encadeamento
- Prós e contras do padrão de encadeamento
- Método method()
- Resumo
- Padrão de namespace
- Capítulo 6 ■ Padrões de reutilização de código
- Clássico versus moderno: padrões de herança
- Resultado esperado quando se usa herança clássica
- Padrão clássico 1 – padrão comum
- Seguindo a cadeia de protótipos
- Problemas no uso do padrão 1
- Padrão clássico 2 – Rent-a-Constructor (aluga-se um construtor)
- A cadeia de protótipos
- Herança múltipla por empréstimo de construtores
- Prós e contras do padrão de empréstimo de construtor
- Padrão clássico 3 – Aluga e define (rent and set) o protótipo
- Padrão clássico 4 – Compartilhe o protótipo
- Padrão clássico 5 – um construtor temporário
- Armazenando a superclasse
- Redefinindo o ponteiro do construtor
- Klass
- Herança prototípica
- Discussão
- Inclusão na ECMAScript 5
- Herança por cópia de propriedades
- Mix-ins
- Métodos emprestados
- Exemplo: emprestando de um array
- Empresta e liga (borrow and bind)
- Function prototype bind()
- Resumo
- Capítulo 7 ■ Padrões de projeto
- Singleton
- Usando new
- Instância em uma propriedade estática
- Instância em um closure
- Fábrica (Factory)
- Fábrica de objetos embutida
- Iterador (Iterator)
- Decorador (Decorator)
- Utilização
- Implementação
- Implementação usando uma lista
- Estratégia (Strategy)
- Exemplo de validação de dados
- Fachada (Façade)
- Proxy
- Um exemplo
- Proxy como cache
- Mediador (Mediator)
- Exemplo de mediador
- Observador (Observer)
- Exemplo 1: Assinatura de revista
- Exemplo 2: o jogo de pressionamento de teclas
- Resumo
- Singleton
- Capítulo 8 ■ DOM e padrões de navegador
- Separação de interesses (separation of concerns)
- Script em DOM
- Acesso ao DOM
- Manipulação do DOM
- Eventos
- Tratamento de eventos
- Delegação de eventos
- Scripts de execução longa
- setTimeout()
- Web workers
- Script remoto
- XMLHttpRequest
- JSONP
- Frames e sinalizadores de imagens
- Implantando JavaScript
- Combinando scripts
- Minificando e comprimindo
- Cabeçalho Expires
- Usando uma CDN
- Estratégias de carregamento
- Lugar do elemento <script>
- HTTP em bloco
- Elemento <script> dinâmico para downloads não bloqueadores
- Carregamento preguiçoso
- Carregamento sob demanda
- Precarregando o JavaScript
- Resumo
- Índice remissivo
Sobre o autor
Stoyan Stefanov é engenheiro do Facebook. Anteriormente na Yahoo ,ele criou a smush.it – uma ferramenta de otimização de imagens online – e foi arquiteto da ferramenta de desempenho YSlow 2.0. Stoyan é autor de Padrões JavaScript (Novatec) e Object-Oriented JavaScript (O’Reilly), além de ser blogueiro (phpied.com) e palestrante frequente… Ver perfil completo ▶
Livros relacionados
Opinião dos leitores
MARCOS R V
Muito bom livro, superou a expectativa!!!!
Washington M da S
Muito bom, recomendo.
Aleck Y M
Ótimo livro, leitura bem tranquila! Sem dúvidas o melhor livro de Padrões, apesar de básico. Não ganha 5 estrelas, pois a todo momento ensina conceitos básicos da linguagem, tornando a leitura um pouco mais cansativa do que deveria. Tirando isto, perfeito! Espero que lancem um com ES6!!!
Thiago O L
Entrega super rápida e correta. Não tive nenhum tipo de problema com a compra. Que vocês continuem assim! :)





