Node.js
node.js | |
---|---|
![]() | |
Autor | Ryan Dahl |
Desenvolvedor | Node.js Developers, Joyent, Github Contributors |
Lançamento | 27 de maio de 2009 (16 anos) |
Versão estável | 10.14.1 (LTS) (29 de novembro de 2018 | )
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 interpretador de JavaScript assíncrono com código aberto orientado a eventos, criado por Ryan Dahl em 2009, focado em migrar a programação do Javascript do cliente (frontend) para os servidores, criando aplicações de alta escalabilidade (como um servidor web)[1], manipulando milhares de conexões/eventos simultâneas em tempo real numa única máquina física.[2]
O Node.js (ambiente de execução Javascript no servidor) foi implementado baseado no interpretador V8 JavaScript Engine (interpretador de JavaScript em C++ com código aberto do Google, utilizado no Chrome), com desenvolvimento mantido pela fundação Node.js em parceria com a Linux Foundation.
Histórico

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#) é 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.[3]
Vantagens de uso
Flexibilidade
O Node.js possui o gerenciador de pacotes reusáveis NPM (Node Package Manager), o maior repositório de softwares, 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.[3]
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.[3] Um exemplo de uso é uma aplicação de conversa/bate papo (webchat).[3]
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;[3]
Mesma linguagem no frontend e backend, que pode representar ganhos de reuso de código e criação de equipes multidisciplinares, reaproveitando recursos;[3]
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.[3]
Veja também
Referências
- ↑ Wait, What's Node.js Good for Again? Arquivado em 14 de outubro de 2012, no Wayback Machine., By Klint Finley, January 25, 2011, ReadWriteHack
- ↑ Node is a server-side JavaScript interpreter that changes the notion of how a server should work
- ↑ a b c d e f g lenon (5 de setembro de 2018). «Node.js - O que é, como funciona e quais as vantagens». Opus Software. Consultado em 10 de outubro de 2019