Javascript Fullstack
Title Text
Frontend Developer
HTML
CSS
Javascript
Meu desafio:
- criar experiências ricas,
- que funcionassem em todos os browsers,
- com alta performance,
- que fossem escaláveis,
- e que eu não precisasse varar madrugadas
resumindo, precisava melhorar meu workflow
Conheci o Node.js
pude passar a usar Javascript, para todas as coisas
- banco de dados em Javascript (MongoDB)
- servidor em Javascript (Node, Express/Hapi)
- client em Javascript (ah vá) (Angular.js)
- tarefas automatizadas (Gulp)
- testes automatizados (Mocha, Chai, Supertest, Karma, Protractor)
Nenhuma destas coisas é uma bala de prata,
ainda continuo e sempre vou,
buscar novas coisas que me façam fazer mais e melhor!!
- escolha um ou mais bancos, que melhor atendam os dados armazenados
- o mesmo vale para o backend, escolha o que melhor atende a lógica de sua aplicação
- use no client scripts, considerando desempenho/escalabilidade/manutenção
- automatize tudo que for possível
- seja inteligente, e crie formas de reutilizar recursos
- testes automatizados não são apenas um sonho, ou lendas
- dispara alguma tarefa quando um arquivo é alterado
Automação de Tarefas
Gulp
- processa os arquivos baseado em streams
- jshint, eslint, semistandard
- styleguides
Automação de Tarefas
Task para verificar patterns
- Jade, EJS - HTML
- Sass, Less, Stylus - CSS
- EcmaScript 6, Coffeescript, Typescript - Javascript
Automação de Tarefas
Task para arquivos
- otimização de qualidade de imagens
- 1x, 2x, 3x, quantos x você quiser
- sprite images
Automação de Tarefas
Task para processar imagens
Desenvolva a partir de Testes
Testes garantem que você não implemente bugs.
Testes Automatizados
Testes Automatizados
Testes Unitários
- cobrem todas as possibilidades, para uma determinada função/método
- representam de 80 a 90% dos testes que cobrem o módulo/aplicação
Testes Automatizados
Testes de Integração
- testa a comunicação entre componentes que trabalham entre si.
Testes Automatizados
Testes E2E
- testa a aplicação no ambiente final do usuário
- difícil manutenção
- normalmente usado para coisas realmente sensíveis
Módulos
- Cria um único datasource para uma ou mais features similares
- Facilita a manutenção, evolução, e distribuição
- Permite colaboração Open Source
- Lhe orienta a criar algo abstrato, e realmente reutilizável
Módulos
- módulo para Yeoman (scaffolding generator)
- cria um projeto fullstack javascript
- lhe permitindo selecionar cada ferramenta que você deseja/precisa em seu projeto