Em primeiro lugar, ele não é uma linguagem como muitos pensam ou categorizam.
O Node.js pode ser definido como um ambiente de execução Javascript server-side, sendo assim, automaticamente não é uma linguagem, pois você não escreve código Node, mas sim código Javascript.
Sim, isso significa que podemos criar aplicações em Javascript que não necessariamente precisam de um navegador pra rodar, podendo ser possível criar por exemplo, ferramentas de linha de comando ou até apps mais complexos para seu ambiente desktop ou Mobile.
Ok, agora vamos falar sobre o surgimento dele?
Como surgiu o Node.js e o que ele veio resolver
Como todos devem saber, tecnologias normalmente surgem pra resolver problemas comuns em determinados meios, por exemplo, o HTML surgiu para facilitar a disseminação de conhecimentos de um certo grupo — saiba mais sobre o surgimento do HTML —, com o Node.js também não foi diferente.
Ele nasceu lá no anos 2009 "pelas mãos" do engenheiro de software Ryan Dahl e seu foco era ser uma melhor alternativa ao Apache HTTP Server, o servidor web mais popular até então, mas que tinha limitações um pouco preocupantes diante do crescimento da internet.
Hoje o projeto é mantido pela OpenJS Foundation.
O Apache não conseguia lidar bem com muitas requisições simultâneas, por exemplo. O Node então veio com uma abordagem baseada em eventos e execução assíncrona, o que o torna mais leve, rápido e "responsivo" ao hardware, do que os servidores tradicionais.
O Node não foi feito do zero e totalmente na mão pelo Dahl, ele nasceu de um fork a partir da V8, a VM do Google Chrome.
Sim, de forma ultra simplificada, o Node é um navegador sem renderizador gráfio e tunado.
Desde seu lançamento o seus casos de uso só crescem, e apesar de ser uma tecnologia nova — 13 anos até a data em que escrevo este artigo —, já é utilizada por grandes e importantes marcas, como por exemplo: Amazon, Google, Microsoft, Facebook, Netflix, PayPal, Linkedin, entre outras.
Vantagens do Node.js
- O Node usa o famoso javascript como linguagem, permitindo então que você precise aprender apenas uma linguagem de programação para trabalhar tanto no frontend quanto no backend.
- Por usar apenas uma linguagem de programação dos dois lados, você encontra com bem mais facilidade, profissionais que possam lidar com ambos, clientside e serverside, os famosos profissionais fullstack. Por exemplo, você pode fazer um sistema web completamente em Javascript, como é o que propõe o Nullstack.
- É, como já pressuposto, muito leve e também multiplataforma, podendo ser instalado em qualquer SO. Por estes motivos você poderá ter uma boa queda de custos tanto com hardware quanto com licenças, se você usava Java em servidores Windows, por exemplo.
- Suporte quase nativo à conexões em tempo real, sendo bastante comum em backend de jogos online, IoT e até aplicativos de mensagens em tempo real; sendo a socket.io a biblioteca mais famosa para real time no ecossistema Node.
- Possui o maior repositório de bibliotecas de programação do mundo — o NPM (Node Package Manager) —, sendo as vezes motivo de brincadeiras entre devs.
Desvantagens
- Para quem gosta ou está acostumado à linguagens rígidas com tipagens fortes, ou até mesmo POO, de primeiro momento o uso do Javascript pode ser bastante incômodo, visto que tal linguagem tem tipagem dinâmica fraca, e originalmente não possui orientação à objetos como estamos acostumados, apesar de ter classes — isso tudo pode ser parcialmente resolvido com uso do Typescript — e também não tem uma compilação como maioria das linguagens.
- O tamanho do repositório também pode ser um problema, já que é fácil ficar perdido em meio à tantos frameworks e bibliotecas ali disponíveis, sendo de início quase impossível encontrar algo que realmente funcione em seu projeto.
- Se não tomar cuidado também, a assincronia do Node pode ser um problema, mas fácil de aprender e acostumar. Por o Node usar muito a proposta de callbacks, o uso demasiado dessa funcionalidade pode gerar o tão famoso callback hell que é o uso excessivo de callbacks, dificultando a manutenção do código. Mas isso é parcialmente resolvido com as Promises do EcmaScript 6 e talvez completamente com as Async/Await do ES7.
Ok, já que tivemos um breve resumo sobre quase tudo, vamos ver como instalar e verificar se realmente instalou nosso querido Node.js.
Instalando o NodeJS
Instalação no Windows
Como sempre, a instalação no Windows é muito simples, basta a gente ir ao site oficial fazer o download do instalador e executá-lo. Atualmente a versão mais nova é a 17.7.2, e a LTS é a 16.4.2, quando você for tentar já pode ser outra, mas sempre dê preferência à versões LTS.
Siga as instruções do instalador e em minutos você vai tê-lo completamente configurado.
Instalação no Linux
No linux é levemente complicado. Antes precisamos adicionar o repositório com cURL
curl -sL https://deb.nodesource.com/setup\_16.x | sudo -E bash -
Depois de executar este comando, a adição do nosso Node versão 16 iniciará. Note que ao final colocamos 16.x
que é a versão que pretendemos instalar.
Agora vamos instalar com o comando
sudo apt install nodejs
Verificando a instalação e versão do nosso Node
Vamos rodar este comando e esperar seu resultado
node --version
Caso não dê nenhum erro vamos ver se foi instalado também o NPM anteriormente falado, pra isso vamos usar
npm --version
Note que em ambos os casos usamos --version
, mas se preferir você pode usar apenas -v
para fins de maior praticidade.
Uh, espero que tenhamos entendido tudo com facilidade. Na próxima veremos como construir uma API simples em Node, usando Express.js
Espero nos reencontrarmos novamente.