2. Fernando Henriques
● Desenvolvedor 10+ anos
● Senior Full Stack Developer
● JavaScript, Ruby, PHP e Java
● Front-end 💓 3000
github.com/fernandohenriques
3. ● Hot reload
○ Nodemon
○ node-supervisor
○ Forever
1. Não utilizar development tools
4. Nome da empresa 1
1. Não utilizar development tools
1.2 Automatic browser refresh
○ Três steps:
1) Watch;
2) Enviar mensagem para os clientes conectados;
3) Page reload.
○ Libs úteis
■ watch - to watch for file changes
■ sendevent - server-sent events
■ uglify-js - for minifying the client-side JavaScript files
5. ● Se você não está trabalhando com workers (>12), o
Node.js é single thread (usa um core de CPU)
● Exemplos de como você pode ocupar a sua thread
inteira e, assim, bloquear o evento loop
acidentalmente:
○ Parsear um json gigante com JSON.parse;
○ Imprimir um output muito grande de uma só vez.
2. Bloquear o event loop
6. ● Soluções possíveis:
○ Monitorar o event loop
■ https://www.npmjs.com/package/blocked
○ Entender e respeitar as limitações do Node.js
○ Rodar sua aplicação em mais de um core
○ Estudar worker e worker pool
2. Bloquear o event loop
7. ● Ou: Pense bem antes de usar async/await
3. Mau uso do event loop
8. ● Mesmo código, usando async/await de forma mais
inteligente:
3. Mau uso do event loop
12. ● Existem inúmeras libs que podem nos ajudar a logar:
○ Morgan (log de requisições http)
○ Bunyan
○ Winston
○ Bugsnag (serviço pago)
6. Logging pobre
13. ● Escrever testes automatizados com JavaScript e
Node.js não tem custo alto (é fácil começar a testar);
● Existem muitas ferramentas e muito conteúdo na
internet mostrando como testar com Node.js;
○ Exemplo de tutorial “getting started” de como
testar com Node.js: TDD com Node.js + Mocha + Chai
7. Não escrever testes
14. ● Ferramentas de testes mais utilizadas pelo mercado
e pela comunidade open-source:
○ Testing frameworks: Mocha, Jest, Jasmine…
○ E2E testing libraries: Selenium, Cypress,
Puppeteer...
○ Assert libraries: Chai, Expect, Should.js...
○ Factories: Faker.js, Factory Girl...
○ Code coverage: Istanbul
7. Não escrever testes
17. ● Uma alternativa: https://www.npmjs.com/package/debug
9. Debuggar com console.log
18. ● Vantagens da lib debug:
○ Reaproveitamento de debug
○ Environment DEBUG ($ export DEBUG=* & node app.js)
○ Controlar o que é debugado através do valor passado em DEBUG
9. Debugar com console.log