Cangaceiro JavaScript Uma aventura no sertão da programação
Flávio Almeida
Conteúdo
Talvez nenhuma outra linguagem tenha conseguido invadir o coletivo imaginário dos desenvolvedores como JavaScript fez. Em sua história fabular em busca de identidade, foi a única que conseguiu se enraizar nos navegadores, tornando-se uma linguagem em que todo desenvolvedor precisa ter algum nível de conhecimento.
Neste livro completíssimo, adentre o sertão do JavaScript com o cangaceiro Flávio Almeida percorrendo os principais recursos das versões ES5, ES6, ES7 e ES8. Transite entre os paradigmas Orientado a Objetos e o Funcional e aplique padrões de projetos para sobreviver durante sua caminhada.
Transcenda seu conhecimento incluindo em seu arsenal de desenvolvedor IndexedDB, Babel e Webpack, tornando-se um Cangaceiro JavaScript!
Sumário
Parte 1 - O caminho do cangaceiro
- 1 Prólogo: era uma vez no sertão
- 1.1 O problema do nosso código
- 1.2 O padrão MVC (Model-View-Controller)
- 2 Negociar com o cangaceiro, tem coragem?
- 2.1 O papel de um modelo
- 2.2 A classe Negociação
- 2.3 Construtor de classe
- 2.4 Métodos de classe
- 2.5 Encapsulamento
- 2.6 A sintaxe get
- 2.7 Objetos imutáveis
- 2.8 A instância é imutável mesmo?
- 2.9 Programação defensiva
- 2.10 Menos verbosidade no constructor com Object.assign
- 2.11 Atalho para propriedades de objetos literais
- 2.12 As surpresas de declarações com var
- 2.13 Declaração de variáveis com let
- 2.14 Temporal Dead Zone
- 3 No cangaço, é ação para todo lado
- 3.1 O papel de um controlador
- 3.2 A classe NegociacaoController
- 3.3 Associando métodos do controller às ações do usuário
- 3.4 Evitando percorrer desnecessariamente o DOM
- 3.5 Criando uma instância de Negociação
- 3.6 Criando um objeto Date a partir da entrada do usuário
- 3.7 Um desafio com datas
- 3.8 Resolvendo um problema com o paradigma funcional
- 3.9 Arrow functions: deixando o código ainda menos verboso
- 4 Dois pesos, duas medidas?
- 4.1 Isolando a responsabilidade de conversão de datas
- 4.2 Métodos estáticos
- 4.3 Template string
- 4.4 A boa prática do fail-fast
- 5 O bando deve seguir uma regra
- 5.1 Criando um novo modelo
- 5.2 O tendão de Aquiles do JavaScript
- 5.3 Blindando o nosso modelo
- 6 A moda no cangaço
- 6.1 O papel da View
- 6.2 Nossa solução de View
- 6.3 Construindo um template dinâmico com a função map
- 6.4 Totalizando o volume de negociações
- 6.5 Totalizando com reduce
- 7 O plano
- 7.1 Parâmetro default
- 7.2 Criando a classe MensagemView
- 7.3 Herança e reutilização de código
- 7.4 Classes abstratas?
- 7.5 Para saber mais: super
- 7.6 Adquirindo um novo hábito com const
Parte 2 - Força Volante
- 8 Um cangaceiro sabe delegar tarefas
- 8.1 E se atualizarmos a View quando o modelo for alterado?
- 8.2 Driblando o this dinâmico
- 8.3 Arrow function e seu escopo léxico
- 9 Enganaram o cangaceiro, será?
- 9.1 O padrão de projeto Proxy
- 9.2 Aprendendo a trabalhar com Proxy
- 9.3 Construindo armadilhas de leitura
- 9.4 Construindo armadilhas de escrita
- 9.5 Reflect API
- 9.6 Um problema não esperado
- 9.7 Uma solução para que nossas armadilhas funcionem
- 9.8 Construindo armadilhas para métodos
- 9.9 Uma pitada do ES2016 (ES7)
- 9.10 Aplicando a solução em NegociacaoController
- 10 Cúmplice na emboscada
- 10.1 O padrão de projeto Factory
- 10.2 Nosso proxy ainda não está 100%!
- 10.3 Associando modelo e View através da classe Bind
- 10.4 Parâmetros REST
- 11 Data dos infernos!
- 11.1 O problema com o input date
- 11.2 Ajustando nosso converter
- 11.3 Lidando com exceções
- 11.4 Criando nossa própria exceção: primeira tentativa
- 11.5 Criando nossa própria exceção: segunda tentativa
- 12 Pilhando o que interessa!
- 12.1 Servidor e infraestrutura
- 12.2 Requisições Ajax com o objeto XMLHttpRequest
- 12.3 Realizando o parse da resposta
- 12.4 Separando responsabilidades
- 13 Lutando até o fim
- 13.1 Callback HELL
- 13.2 O padrão de projeto Promise
- 13.3 Criando Promises
- 13.4 Criando um serviço para isolar a complexidade do XMLHttpRequest
- 13.5 Resolvendo Promises sequencialmente
- 13.6 Resolvendo Promises paralelamente
- 13.7 Ordenando o período
- 13.8 Impedindo importações duplicadas
- 13.9 As funções filter() e some()
Parte 3 - A revelação
- 14 A algibeira está furada!
- 14.1 IndexedDB, o banco de dados do navegador
- 14.2 A conexão com o banco
- 14.3 Nossa primeira store
- 14.4 Atualização do banco
- 14.5 Transações e persistência
- 14.6 Cursores
- 15 Colocando a casa em ordem
- 15.1 A classe ConnectionFactory
- 15.2 Criando Stores
- 15.3 Garantindo uma conexão apenas por aplicação
- 15.4 O padrão de projeto Module Pattern
- 15.5 Monkey Patch: grandes poderes trazem grandes responsabilidades
- 16 Entrando na linha
- 16.1 O padrão de projeto DAO
- 16.2 Criando nosso DAO de negociações
- 16.3 Implementando a lógica de inclusão
- 16.4 Implementando a lógica da listagem
- 16.5 Criando uma DAOFactory
- 16.6 Combinando padrões de projeto
- 16.7 Exibindo todas as negociações
- 16.8 Removendo todas as negociações
- 17 Dividir para conquistar
- 17.1 Módulos do ES2015 (ES6)
- 17.2 Instalando o loader
- 17.3 Transformando scripts em módulos
- 17.4 O papel de um transcompilador
- 17.5 Babel, instalação e build-step
- 17.6 Sourcemap
- 17.7 Compilando arquivos em tempo real
- 17.8 Barrel, simplificando a importação de módulos
- 18 Indo além
- 18.1 ES2017 (ES8) e o açúcar sintático async/await
- 18.2 Para saber mais: generators
- 18.3 Refatorando o projeto com async/wait
- 18.4 Garantindo a compatibilidade com ES2015
- 18.5 Lidando melhor com exceções
- 18.6 Debounce pattern: controlando a ansiedade
- 18.7 Implementando o Debounce pattern
- 19 Chegando ao limite
- 19.1 O padrão de projeto Decorator
- 19.2 Suportando Decorator através do Babel
- 19.3 Um problema não esperado com nosso Decorator
- 19.4 Elaborando um DOM Injector
- 19.5 Decorator de classe
- 19.6 Simplificando requisições Ajax com a API Fetch
- 19.7 Configurando uma requisição com API Fetch
- 19.8 Atalho para a propriedade de objetos literais
- 19.9 Validação com parâmetro default
- 19.10 Reflect-metadata: avançando na metaprogramação
- 19.11 Adicionando metadados com Decorator de método
- 19.12 Extraindo metadados com um Decorator de classe
- 20 Enfrentamento final
- 20.1 Webpack, agrupador de módulos
- 20.2 Preparando o terreno para o Webpack
- 20.3 O temível webpack.config.js
- 20.4 Babel-loader, a ponte entre o Webpack e o Babel
- 20.5 Preparando o build de produção
- 20.6 Mudando o ambiente com cross-env
- 20.7 Webpack Dev Server e configuração
- 20.8 Tratando arquivos CSS como módulos
- 20.9 Resolvendo o FOUC (Flash of Unstyled Content)
- 20.10 Resolvemos um problema e criamos outro, mas tem solução!
- 20.11 Importando scripts
- 20.12 Lidando com dependências globais
- 20.13 Otimizando o build com Scope Hoisting
- 20.14 Separando nosso código das bibliotecas
- 20.15 Gerando a página principal automaticamente
- 20.16 Simplificando ainda mais a importação de módulos
- 20.17 Code splitting e Lazy loading
- 20.18 System.import vs import
- 20.19 Quais são os arquivos de distribuição?
- 20.20 Deploy do projeto no Github Pages
- 20.21 Alterando o endereço da API no build de produção
- 20.22 Considerações finais
Autor

Flávio Almeida
Flávio Almeida é desenvolvedor e instrutor na Caelum. Possui mais de 14 anos de experiência na área de desenvolvimento com ampla atuação em segmentos da indústria de shopping centers e varejo. Bacharel em Informática com MBA em Gestão de Negócios em TI, possui Psicologia como segunda graduação e procura aplicar o que aprendeu no desenvolvimento de software e na educação. Trabalha com a plataforma Java desde 2004, mas, atualmente, tem focado na plataforma Node.js e na linguagem JavaScript, tentando aproximar ainda mais front-end e back-end. Participou das edições 2013 e 2014 da MobileConf e costuma contribuir com o Blog da Caelum sobre os mais diversos assuntos. Elabora treinamentos para a plataforma online Alura, atividade que vem se tornando cada vez mais prazerosa. Possui uma conta no Twitter e outra no GitHub.
Dados do produto
- Número de páginas:
- 502
- ISBN:
- 978-85-94188-00-7
- Data publicação:
- 08/2017