Upgrade to Pro — share decks privately, control downloads, hide ads and more …

9 erros que desenvolvedores Node.js cometem

9 erros que desenvolvedores Node.js cometem

Palestra realizada no 2º meetup da comunidade Node.js Rio, dia 26/09/2019, no aconchegante espaço da Nexaas no Centro do RJ.

O foco da talk é chamar atenção para como o Node.js funciona (assíncrono, com I/O não-bloqueante) e prevenir mau uso de suas features, bem como reforçar boas práticas de design de softwares.

Avatar for Fernando Henriques

Fernando Henriques

September 26, 2019
Tweet

More Decks by Fernando Henriques

Other Decks in Programming

Transcript

  1. Fernando Henriques • Desenvolvedor 10+ anos • Senior Full Stack

    Developer • JavaScript, Ruby, PHP e Java • Front-end 3000 github.com/fernandohenriques
  2. 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
  3. • 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
  4. • 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
  5. • 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
  6. • 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
  7. • 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. • 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