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

Github