JavaScript, Node.js e MySQL
Ano letivo · 1243 termos · 44 dias · 88 aulas
O material inteiro do ano em um só lugar. Digite o nome do método, do operador, da tabela ou do conceito e você chega no dia E na aula onde ele aparece.
JavaScript no navegador
Do zero ao DOM: sintaxe, funcoes, `async`/`await` e a arvore que o navegador monta. 13 dias, 26 aulas de 50 min.
Como o JavaScript roda no navegador
O que e a linguagem, onde ela roda, e a diferença entre rodar no navegador e rodar no servidor.
1. O que e JavaScript e onde ele roda
2. O primeiro script: console e alert
Variáveis, let e const
Como se guarda um valor, e por que let e const substituíram var.
1. let, const e o fim de var
2. const, escopo de bloco e o que não pode mudar
Tipos, operadores e comparacao
Os tipos do JavaScript, a aritmetica e as pegadinhas de comparacao que fazem alunos perderem nota.
1. Os tipos de dado e typeof
2. Operadores, comparacao e o caso de == contra ===
Strings
Texto: concatenar, interpolar, medir e fatiar.
1. Aspas, concatenar e interpolar
2. Os metodos de string que o aluno procura
Condicionais, truthy e falsy
Decidir o que o programa faz, e a lista curta de valores que contam como booleano.
1. if, else if, else e switch
2. Truthy, falsy e o operador ternario
Lacos de repeticao
Repetir um bloco de código, e percorrer listas e textos.
1. for, while e do...while
2. for...of e for...in: percorrer colecoes
Funções, escopo e closures
Declarar, chamar e passar dados: parametros, retorno, escopo e o que uma função guarda.
1. Declarar, chamar e passar dados
2. Arrow function, escopo e closures
Arrays
Listas: criar, acessar, percorrer e alterar.
1. Criar, acessar e alterar arrays
2. Iterar, transformar e filtrar arrays
Objetos
Estruturas chave-valor, e os metodos que o aluno mais procura.
1. Criar e acessar propriedades
2. Desestruturacao e os metodos de objeto
Desafios: sintaxe do zero
Sem DOM ainda. Consolida tudo o que veio antes com código que roda de verdade.
1. Desafio 1: validar e formatar um cadastro
2. Desafio 2: manipular uma lista de notas
A página: document e querySelector
Pela primeira vez o código mexe no que o aluno ve.
1. DOM e a arvore do HTML
2. querySelector e alterar o que esta na tela
Eventos e construir elementos
Responder a clique, teclado e envio, e montar listas na tela. E onde o JS deixa de ser decorativo.
1. addEventListener e o clique
2. Criar elementos, eventos de teclado e formulario
Estado da aplicacao e projeto final
Guardar dados e desenhar a tela a partir deles, e juntar sintaxe, DOM, eventos e estado num programa so.
1. Estado e render: a fonte unica da verdade
2. Projeto final: lista de tarefas com filtro e busca
Node.js e MySQL
A mesma linguagem fora do navegador: processo, porta, rota e MySQL. 16 dias, 32 aulas de 50 min.
Node.js: rodar JavaScript fora do navegador
O runtime, a diferença para o navegador e o primeiro programa no terminal.
1. O que e Node.js e por que ele existe
2. O primeiro programa no terminal
npm e o gerenciador de pacotes
Instalar, criar projeto e declarar dependências.
1. npm: instalar pacotes
2. scripts e organização do projeto
Módulos: import e export
Dividir o código em arquivos e ligar um no outro.
1. require e module.exports
2. import e export com ESM
Sistema de arquivos
Ler, escrever e listar arquivos com fs.
1. fs: ler e escrever arquivos
2. Promises no fs e operações de diretório
HTTP: o que o servidor faz
Protocolo, requisição, resposta e os status que importam.
1. O protocolo HTTP, sem mistério
2. Criar o primeiro servidor HTTP
Rotas
Responder diferente conforme o caminho e o método.
1. Ler a URL e separar os caminhos
2. if/else de rotas e resposta JSON
Receber e validar dados do cliente
Ler o corpo da requisição e conferir o que chegou.
1. Ler o corpo da requisição
2. Validar o que chegou
MySQL: o banco relacional
O que é banco de dados, tabela, registro e chave.
1. Banco de dados e MySQL
2. Criar banco e tabela
SQL: inserir e consultar
INSERT e SELECT, com WHERE, ORDER BY e LIMIT.
1. INSERT: gravar dados
2. SELECT: ler dados
SQL: alterar e apagar
UPDATE e DELETE, e o cuidado que eles exigem.
1. UPDATE e ALTER TABLE
2. DELETE e os cuidado de quem apaga
JOIN
Unir tabelas que se relacionam.
1. Chave estrangeira e relacionamentos
2. INNER JOIN, LEFT JOIN e agregação
mysql2: ligar o Node no MySQL
O driver, a conexão e as primeiras consultas pelo Node.
1. Instalar mysql2 e conectar
2. Executar consultas pelo Node
SQL injection: o erro que não se comete
Por que nunca se concatena string em SQL, e a forma certa.
1. O que é SQL injection e como acontece
2. Consultas parametrizadas
Transações
Várias consultas que precisam acontecer juntas — ou nenhuma.
1. BEGIN, COMMIT e ROLLBACK
2. Quando usar transação num caso real
CRUD completo com HTTP e MySQL
Juntar o que veio antes: rotas, validação, SQL e banco.
1. Listar e buscar
2. Criar, alterar e apagar
Projeto do trimestre: API com MySQL
Fecha o 2º trimestre com uma API completa e o roteiro do 3º.
1. Montar a API do zero
2. Revisão e o que vem no 3º trimestre
Node.js e MySQL
O que o 2º trimestre deixou: autenticacao, camadas, teste, migracao, seguranca e deploy. 15 dias, 30 aulas de 50 min.
Onde o 2º trimestre parou
Retomar a API, olhar o que ela faz de errado e organizar o código em camadas.
1. Revisão da API do 2º trimestre
2. Separar em camadas: rota, serviço, repositório
Autenticação
Guardar sessão, gerar token, proteger as rotas. O ponto que faltava no 2º trimestre.
1. Senha com hash e login
2. Token e proteção de rota
Testes
Provar que o código faz o que promete, sem clicar em nada.
1. O que é teste e por que importa aqui
2. Escrever e rodar os primeiros testes
Migrações de banco
Mudar o esquema sem quebrar quem já usa. O que faltava para o projeto sobreviver a uma mudança.
1. O problema de mudar tabela com dado dentro
2. Escrever e versionar migrações
Validação de entrada em profundidade
Checar tipo, formato e tamanho de cada campo, no servidor.
1. Validar tipo, formato e tamanho
2. Validação como camada, com biblioteca
Segurança do servidor
O que mais quebra um servidor em produção, além do SQL injection.
1. CORS, cabeçalhos e limites de taxa
2. Segredo, variável de ambiente e log
Desempenho de consulta
Descobrir por que a consulta está lenta, em vez de adivinhar.
1. EXPLAIN: ver o plano da consulta
2. Índice e a consulta que ele muda
Transações e concorrência
O que acontece quando duas requisições mexem no mesmo registro ao mesmo tempo.
1. O problema da concorrência
2. Resolvendo com transação e bloqueio
Process manager e produção
O servidor que não morre quando o processo cai, e não sobe a cada reboot.
1. Fazer o processo sobreviver
2. Ambiente de produção e deploy
Docker e o banco em container
O ambiente inteiro num comando, para qualquer máquina reproduzir o que roda aqui.
1. Dockerfile da aplicação Node
2. Compose com Node e MySQL juntos
Regras de negócio: o CRUD não é o sistema
Onde a regra do negócio entra, e por que erro de negócio não é erro técnico.
1. Erro de negócio contra erro de técnica
2. Máquina de estados: quando o dado tem estágios
Trabalho que demora
O que fazer quando a tarefa é lenta e o cliente não pode esperar.
1. Por que a requisição não pode fazer tudo
2. Fila de trabalho e execução em segundo plano
Saber o que está acontecendo em produção
Descobrir a causa de um erro sem pedir para o usuário descrever a tela.
1. Log que responde pergunta
2. Achar o erro pelo identificador
Documentação e entrega
Escrever a documentação que a pessoa que vai manter isso precisa.
1. Documentar a API
2. Entregar o projeto completo
Fechamento do ano letivo
Fechar o ano, revisar o caminho inteiro e olhar o que vem depois.
1. Revisão do ano: do navegador ao servidor
2. Para onde seguir
Nenhum dia corresponde a busca. Tente outro termo.