Apostila Avançada de JavaScript
Estilização
Estilização através do atributo style
Unidades de medida no atributo style
Erros com unidades de medida
Descompactação de valores de propriedades CSS
Redefinição de estilos através do style
Configuração em massa de estilos
Problemas de leitura de estilos
Leitura de propriedades de arquivos CSS
Conversão de valores lidos
Estilização por classes
Uma classe para estilização
Inconveniência das classes
Alternância de estilos através de data-
Métricas de elementos
Expansão de elementos em CSS
Elemento de teste
Tamanho do cliente do elemento
Tamanho total do elemento
Dimensões do elemento com rolagem
Rolagem de elementos
Alteração da rolagem do elemento
Rolagem do elemento até o final
Expansão do elemento
Largura da barra de rolagem
Métricas da Janela
Tamanhos da janela
Tamanhos da janela com rolagem
Obtendo a rolagem da janela
Obtendo e alterando a rolagem da janela
Método para rolar a janela para uma posição
Método para rolar a janela por um valor
Método para rolar a janela até um elemento
Evento de rolagem
Coleções Map
Coleções Set
Introdução
Preenchimento Inicial
Funcionalidades Úteis
Iteração com Loop
Conversão
Remoção de Duplicatas de Array
Obter sem Duplicatas
Pseudoarrays
Introdução
Semelhança com arrays
Diferenças
Verificação de array
Conversão para array
Tipos de pseudoarrays
Diferença entre os tipos
Símbolos
Introdução ao tipo Symbol
Descrições do símbolo
Símbolos como chaves de objetos
Iteração de objeto com símbolos
Função em um objeto
Operações com objetos na função
Símbolos globais
Obtendo o nome do símbolo
Símbolos bem conhecidos
Iteradores
Objetos iteráveis
Função iteradora
Invocações do iterador
Geradores
Loops em geradores
Operação única de iteradores
Iterador de objeto
Criação de objeto iterável
Gerador através de propriedade computada
Iterador embutido values
Iterador embutido keys
Iterador embutido entries
Três iteradores embutidos
Operador spread e iteradores
Iteradores embutidos de string
Array de dígitos de um número
Numeração de elementos DOM
Obtenção de dados de elementos DOM
Formato JSON
Armazenamento
Introdução
Armazenamento no depurador
Dados
Salvamento único
Regravação de dados
Remoção de dados
Limpeza do armazenamento
Quantidade de registros
Obtenção da chave pelo número
Iteração do armazenamento por índices
Arrays de chaves e valores do armazenamento
Armazenamento de estruturas
Modificação de estruturas armazenadas
Prática
Expressões Regulares
Introdução
Operadores de repetição
Parênteses de agrupamento
Escapando caracteres especiais
Chaves
Limitação da ganância
Grupos de caracteres
Conjuntos de caracteres
Inversão de conjuntos de caracteres
Particularidades do cirílico
Caracteres especiais dentro de conjuntos
Grupos de caracteres dentro de conjuntos
Caracteres especiais de exclusão dentro de conjuntos
Símbolo de acento circunflexo dentro de conjuntos
Particularidades do hífen dentro de conjuntos
Ignorando maiúsculas e minúsculas
Início e fim da linha
Limite de palavras
Multilinha
Comando 'ou'
Variável com regex
Método test
Método search
Método split
Método match
Grupos de captura no método match
Match global
MatchAll global
Método exec
Propriedade lastIndex
Grupos de captura no método replace
Callback no método replace
Grupos de captura padrão no método replace
Grupos de captura na própria regex
Grupos de captura nomeados
Grupos de captura nomeados dentro da expressão
Parênteses não capturadores
Lookahead e lookbehind positivo e negativo
String com regex
Flags para strings
Barra invertida em strings
Situações Excepcionais
Introdução
Tipos de Situações Emergentes
Captura de Exceções
Desenvolvimento com try-catch
Captura de Exceções em Código Aninhado
Objeto de Exceção
Tipos Básicos de Exceções
Aplicação de Tipos de Exceção
Lançamento de Exceções
Lançamento de Diferentes Tipos de Exceções
Lançamento de Tipos de Exceção Personalizados
Exemplo de Exceção com Atributos data-
Exemplo de Exceção com JSON
Propagação de Exceções
Assincronicidade
Código Síncrono e Assíncrono
Assincronicidade do Modelo de Eventos
Assincronicidade do Carregamento de Imagens
Situações Excepcionais em Código Assíncrono
Callbacks Assíncronos
Introdução
Passagem assíncrona de resultado para o callback
Passagem de parâmetros para o callback assíncrono
Tratamento de exceções em callbacks assíncronos
Carregamento de imagens
O problema do callback hell
Carregamento assíncrono de imagens em loop
Promises
Introdução a Promises
Situações excepcionais
Objeto de erro
Captura separada de exceções
Estados de uma Promise
Encadeamento de Promises
Promises dentro do encadeamento
Exceções em cadeias de Promises
Trabalhando com arrays de Promises
Criação de Promises resolvidas
Promisificação de código assíncrono
O problema do promise hell
Promises em estilo síncrono
Exceções em estilo síncrono
Bibliotecas
Ferramentas
Versionamento Semântico
Terminal
NodeJS
Introdução ao npm
Instalação via npm
Forma abreviada de instalação
Dependências no arquivo package.json
Dependências de Dev
Formatos de versão de dependências
Configurações do arquivo package.json
Criação do arquivo package.json
Transferência de projeto npm
Arquivo package-lock.json
Atualização de pacotes
Remoção de pacotes
Instalação global via npm
Remoção global de pacotes
Ferramenta npx
Execução de scripts via npm
Gerenciador Yarn
Módulos ES
Introdução a módulos
Ativando módulos ES
Instalando Webpack
Princípio de funcionamento do Webpack
Configurando o Webpack
Configurando a execução da build do Webpack
Build de teste via Webpack
Conectando o bundle à marcação
Criando um módulo ES
Conectando um módulo ES
Renomeando na importação
Importando todo o conteúdo de um módulo
Exportação padrão
Combinação de exportações
Importando todo o conteúdo na combinação de exportações
Exportando valores
Valores como constantes
Importando módulos npm
Importação dinâmica
Importação múltipla dinâmica
Conversão de módulos CommonJS
Protocolo HTTP
Servidor de Teste
Introdução
Utilização
Execução de Código
Geração de HTML
Cabeçalhos de Resposta
Configuração de Porta
Lançamento Múltiplo
Formulários
Envio de formulários
Métodos de envio de formulários
Envio de formulários com método GET
Envio de formulários com método POST
Requisições GET
Aplicação de requisições GET
Botões do formulário
Envio de formulários via JavaScript
Impedir o envio do formulário
Introdução ao FormData
Métodos do FormData
Iteradores do FormData
AJAX
Introdução ao AJAX
Fundamentos do fetch
Código de resposta HTTP
Sucesso da requisição
Situações excepcionais
Captura completa de erros
Cabeçalhos de resposta HTTP
Obtendo JSON
Cabeçalhos de requisição HTTP
Requisições GET
Requisições POST
Dados via URLSearchParams
Dados via FormData
Envio de formulário completo
Enviando JSON
Política CORS
Transmissão de cookies
Estilo síncrono
Trabalhando com Canvas
Introdução
Desenhando linhas
Desenhando retângulos
Desenhando círculos
Mudando a cor da linha
Mudando a espessura das linhas
Laços
Otimização de Código
Fatores de velocidade de carregamento do site
Recursos disponíveis
Otimização de operações repetitivas
Otimização de repetição de operações pesadas
Otimização de operações em loop
Otimização de passagens de loop desnecessárias
Otimização através de funções incorporadas
Escolha do algoritmo ideal
Otimização do uso de expressões regulares
Otimização da manipulação do DOM
Otimização do consumo de memória
Otimização da conversão para array
Otimização de manipuladores de eventos
Otimização de velocidade em detrimento da memória
Dados
Imutabilidade
Cópia de array
Cópia de objeto
Adição de elementos em um array
Remoção de elementos de um array
Alteração de elementos de arrays
Array de objetos
Geração de id aleatório
Adição de elemento com id
Remoção de elemento por id
Alteração de elemento por id
Alteração de uma propriedade por id
Obtenção de elemento por id