Node.js
Node.js | |
---|---|
![]() | |
Autor | Ryan Dahl |
Desenvolvedor | Node.js Developers, Linux Foundation |
Lançamento | 27 de maio de 2009 (16 anos) |
Versão estável | 12.18.1 (LTS) (17 de junho de 2020 | )
Escrito em | C, C++, JavaScript |
Sistema operacional | OS X, Linux, Solaris, FreeBSD, OpenBSD, Microsoft Windows (older versions require Cygwin), webOS |
Gênero(s) | Event-driven networking |
Licença | MIT |
Estado do desenvolvimento | Corrente |
Página oficial | http://www.nodejs.org |
Node.js é um software de código aberto, multiplataforma, que executa códigos JavaScript no backend/servidor e frontend/interface (dependendo apenas das bibliotecas e dos frameworks usados), baseado no V8 interpretador de JavaScript em C++ do Google, mantido pela fundação Node.js em parceria com a Linux Foundation.
O runtime de JavaScript é constituído pelos seguintes comandos: node package manage (npm), e npx (node package extractor); onde o primeiro tem o propósito de executar código armazenado num package de nodejs, instalando o software globalmente ou localmente, já o segundo tem o propósito de instalar a nível local o código instalado globalmente. Um exemplo disso é o npx create-react-app que tem como propósito instalar a nível local um template vazio de um site de react, pronto a ser usado, através de uma fórmula instalada com npm.
A tecnologia robusta C++ e boost, como era conhecido no final da década de 1990 (quando a sintaxe foi completamente alterada, mantendo-se para fins de compatibilidade backward). Usando também recorrentemente para este fim a linguagem bindings com sistemas de JavaScript mais universais, garantindo que há o mínimo de deprecações no código com o passar do tempo. Exceções disso, são alguns de JavaScript vanilla, que não são incluídos em node, que podem ser importados para nodejs. Um exemplo disso é o comando readine(), que precisa de ser importado e sofre de algumas alterações. Ainda assim o código é bem mais buletproof do que o código de Python, que depreca com relativa facilidade.
O código de nodejs é baseado na arquitetura event-driven, capaz de entrada/saída assíncrona. Otimizado para ser corrido em tempo real tratando-se também de um ditribuído.
Histórico

Ryan Dahl se inspirou para criar Node.js depois de ver barra de progresso de upload de arquivos no Flickr, ele percebeu que o navegador não sabia o quanto do arquivo foi carregado e tinha que consultar o servidor web.
Características
A principal característica e diferença de outras tecnologias (como PHP, Java, C# e C) é a execução das requisições/eventos em single-thread, onde apenas uma thread (chamada de Event Loop) é responsável por executar o código Javascript, sem a necessidade de criar nova thread que utilizaria mais recursos computacionais (por exemplo memória RAM) e sem o uso da fila de espera.[1]
Vantagens de uso
Flexibilidade
O Node.js possui o gerenciador com inúmeros pacotes e softwares reusáveis NPM (Node Package Manager), dando ao interpretador um potencial a ser utilizada em qualquer situação. O pacote mais conhecido é o Express.js, um framework completo para desenvolvimento de aplicações Web.[1]
Leveza
Um ambiente Node.js não exige muitos recursos computacionais tradicionais. Se utilizado em conjunto com a ferramentas Docker, o ganho na velocidade de deploy e replicação de máquinas pode ser muito significativo e, em ambientes escaláveis, de micro-serviços e serverless, representa menos custo e mais eficiência.[1] Um exemplo de uso é uma aplicação de conversa/bate papo (webchat).[1]
Suporte
Conta com suporte das principais empresas de serviços de armazenamento na nuvem, como a AWS, Google Cloud e, Microsoft Azure, com suporte nativo ao Node.JS.
Produtividade
O gerenciador NPM fornece pacotes reusáveis disponível gratuitamente para uso em grupo;[1]
Mesma linguagem no frontend e backend, que pode representar ganhos de reuso de código e criação de equipes multidisciplinares, reaproveitando recursos;[1]
A possibilidade de deploys e iterações mais rápidas, e resolução de problemas "on the fly", também permitem a criação de soluções próprias e inovadoras, como a Uber faz para resolver alguns problemas.[1]
Veja também
Referências
Ligações externas
- «Página oficial»
- Repositório de códigos
- Just what is Node.js? por IBM (em inglês)