9 erros que
desenvolvedores
Node.js cometem
Inclusive eu. :)
Fernando Henriques
● Desenvolvedor 10+ anos
● Senior Full Stack Developer
● JavaScript, Ruby, PHP e Java
● Front-end 💓 3000
github.com/fernandohenriques
● Hot reload
○ Nodemon
○ node-supervisor
○ Forever
1. Não utilizar development tools
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
● 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
● 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
● Ou: Pense bem antes de usar async/await
3. Mau uso do event loop
● Mesmo código, usando async/await de forma mais
inteligente:
3. Mau uso do event loop
4. Usar let desnecessariamente
5. Callback Hell
5. Callback Hell
● 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
● 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
● 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
8. Não usar linter (analisador sintático)
9. Debuggar com console.log
● Uma alternativa: https://www.npmjs.com/package/debug
9. Debuggar com console.log
● 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
Obrigado!
@fernandohenriques

9 erros que desenvolvedores Node.js cometem

  • 1.
    9 erros que desenvolvedores Node.jscometem Inclusive eu. :)
  • 2.
    Fernando Henriques ● Desenvolvedor10+ 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 empresa1 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: Pensebem 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
  • 9.
    4. Usar letdesnecessariamente
  • 10.
  • 11.
  • 12.
    ● Existem inúmeraslibs que podem nos ajudar a logar: ○ Morgan (log de requisições http) ○ Bunyan ○ Winston ○ Bugsnag (serviço pago) 6. Logging pobre
  • 13.
    ● Escrever testesautomatizados 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 detestes 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
  • 15.
    8. Não usarlinter (analisador sintático)
  • 16.
    9. Debuggar comconsole.log
  • 17.
    ● Uma alternativa:https://www.npmjs.com/package/debug 9. Debuggar com console.log
  • 18.
    ● Vantagens dalib 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
  • 19.