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!