Back-End

19 jul, 2018

Vale a pena aprender NodeJS?

Publicidade

Neste artigo vamos aprender o que é NodeJS, para que ele serve, quais as vantagens e desvantagens de usá-lo, e entre outras coisas. No final, você decidirá se realmente é conveniente aprender Node ou não para sua vida de desenvolvedor.

Mas o que é NodeJS?

Como muitos ainda pensam, Node não é um framework JavaScript, e muito menos uma nova linguagem de programação. Node é uma plataforma de aplicação, na qual os programas são escritos em JavaScript e são compilados, otimizados, e por fim, interpretados pela Máquina Virtual V8, que é a mesma usada pelo Google para executar JavaScript no navegador Chrome.

O resultado deste processo é entregue como código de máquina server-side, tornando o Node muito mais eficiente na sua execução e consumo de recursos. Ele também é uma tecnologia assíncrona que trabalha com somente uma thread de execução, o que o difere da maioria das outras linguagens que trabalham com o conceito de multi-threading, onde a cada chegada de uma requisição é criado uma nova thread para atendê-la. Esse modelo é mais fácil de programar, porém, bem mais penoso para o hardware, pois consome muito mais recursos.

Para que serve?

O NodeJs serve para fazer inúmeras coisas, porém, seu principal uso está na construção de APIs, pois o seu modelo assíncrono, que trabalha com somente uma thread, consome pouquíssimos recursos do hardware, tornando-o excelente para essa tarefa.

Quais as vantagens de usar NodeJS?

Algumas vantagens de usar Node nos seus projetos:

  • Utiliza JavaScript: o Node usa a consagrada linguagem JavaScript no back-end, então o desenvolvedor poderá usar JavaScript full-stack em suas aplicações, sem precisar ficar traduzindo os dados para fazer o front-end se comunicar com o back-end e vice-versa. É possível usar JSON para tudo.
  • Multiplataforma: além do Node ser bem leve, ele também é multiplataforma. Isso permite que seja possível rodar projetos em serviços abertos e com o sistema operacional que quiser, diminuindo bastante o custo de hardware e software, no caso de licença windows.
  • Não possui dependências: para começar a usar Node não é preciso ter nenhuma dependência instalada no seu computador.
  • Ready for real-time: o Node ficou famoso graças aos seus frameworks que interagem em tempo real entre o cliente e o servidor, como o Express, Mongoose, EJS, Socket.io, entre outros. Esses frameworks são compatíveis com o novo protocolo WebSockets, permitindo o tráfego de dados em somente uma conexão bidirecional, tratando as mensagens via eventos pelo JavaScript.
  • Tudo pronto para usar: o Node oferece muitos pacotes a partir do seu gerenciador de pacotes NPM (Node Package Manager). Lá, está tudo pronto para usar, o que resulta em mais produtividade, pois não é preciso criar algo completamente do zero.
  • Grandes empresas estão usando: mesmo a plataforma sendo consideravelmente nova, já está sendo utilizada por gigantes da tecnologia como, por exemplo: Microsoft, Paypal, LinkedIn, Groupon, Wallmart, Uber, GoDaddy, Netflix, entre outras.
  • Comunidade ativa: existem várias comunidades ativas no mundo inteiro divulgando artigos, tutoriais, palestras, e principalmente através dos mais de 70 mil módulos disponíveis no site oficial do npm.
  • Melhores salários: no Brasil, as vagas para desenvolvedores NodeJS não param de crescer, e ainda há poucos profissionais que dominam essa tecnologia.

E as desvantagens?

Como nem tudo são flores, como já diz o ditado, o Node também possui algumas desvantagens, como:

  • Para quem gosta de linguagens estritas como o C# e o Java, o Node incomoda bastante por não possuir orientação a objetos e ter tipagem fraca (características do JS).
  • O Node ainda é uma tecnologia relativamente nova (2009), apesar de ter muitas coisas já criadas para ele (quando comparada a tecnologias mais tradicionais, como os citados C# e Java, por exemplo).
  • Para aplicações que requerem uma conexão com banco de dados relacional, o Node não é a melhor opção. Ele funciona melhor com bancos de dados não relacionais (NoSQL), como é o caso do MongoDB (para deixar claro, não é que não seja possível, mas o trabalho flui de forma mais natural com bancos não relacionais).

E aí, o que achou? Vale a pena reservar uns dias para aprender Node? Nos conte nos comentários!