Código relativo ao curso Node.js: Inovando com Javascript no backend da Alura
- Instalação do Node.js
- O primeiro código em Node
- Utilizando o Express.js para apps web
- Utilizando EJS para isolar o HTML do JavaScript
- Nodemon para facilitar o deploy durante o desenvolvimento
- Criação de módulos seguindo a CommonJS
- Organização da estrutura de diretórios do projeto
- Estabelecendo conexão com o banco de dados
- Fazendo o select no banco
- Exibindo dados dinamicamente na página
- Carregamento automático com Express-Load
- Form de cadastro dos produtos
- Recebendo os dados do form com body-parser
- Insert do produto no banco
- Um pouco mais sobre o HTTP
- Servindo o conteúdo em diferentes formatos
- Tipos diferentes nas requisições
- Resposta conforme a requisição: Content Negotiation
- Suportando JSON como formato para cadastro
- Validando um campo no form
- Atribuindo mensagens às validações
- Mantendo o estado dos dados do form
- Respeitando o Accept da requisição na mensagem de erro
- Como funciona o module.exports
- Os callbacks e o funcionamento assíncrono do Node.
- Implementação dos casos de teste com Mocha
- Casos de teste com função de finalização
- Padronização dos casos de teste com Assert
- Implementação ágil de testes com Supertest
- Teste de cadastro de produtos
- Trabalhando com ambientes separados: Teste e Dev
- Usando o BeforeEach do Mocha
- Implementando a home da Casa do Código
- Mapeamento de recursos estáticos
- Cadastro de uma nova promoção
- WebSocket no cliente e no servidor
- Entendendo o funcionamento dinâmico do express
- Criando um Middleware
- Deploy no Heroku
- Conexão com o banco remoto
- Preparando a aplicação para o deploy
- Deploy no Heroku através do GIT
- Instalar o MySQL
- Criar banco chamado casadocodigo_nodejs
- Criar banco chamado casadocodigo_nodejs_test
create schema casadocodigo_nodejs;
Para os dois bancos:
- Importar create_table_livros.sql de config/sql/
- Importar populate_table_livros.sql de config/sql/
$ mysql -uroot -proot casadocodigo_nodejs < config/sql/create_table_livros.sql
Instale as dependencias:
$ npm install
Instale e rode o nodemon no seu sistema:
$ sudo npm install -g nodemon
$ nodemon app
$ NODE_ENV=test node_modules/mocha/bin/mocha
Obs: Não é necessário que o node esteja rodando para isso, pois o teste já inicia tudo que é necessário
- Para http load test, instale o siege:
$ sudo pacman -S siege # caso você utilize o Arch Linux ou derivados
$ sudo apt-get install siege # caso você não tenha experimentado o Arch Linux ainda :D
E rode com 10 ou mais conexões simultâneas por 1 minuto
$ siege -c10 -t1M https://localhost:3000
ou utilize o siege instalado pelo npm:
$ node test/benchmark.js
Aqui são coisas que não fazem parte do curso, mas quero fazer para praticar:
- Automatizar isso tudo com Docker (Nginx, MySQL)
- Renomear tudo pra inglês pra ficar mais acessível (?)
- Implementar mais testes para as próximas coisas que quero desenvolver na aplicação
- Implementar Sequelize
- Implementar autenticação com o Passport
- Implementar layout com Bootstrap nas áreas de administração
- Implementar delete e update nos produtos, via form e via API recebendo token
- Implementar CI com o Travis ou Codeship
Front-end:
- Angular com Typescript
- SASS
- Bower
- Gulp