Escolar Documentos
Profissional Documentos
Cultura Documentos
• O que é
• Funcionamento
• NPM
• Pacote / Módulo
• Utilização
• Instalação
Node.js
História
Foi anunciado em 2009 pelo pesquisador Ryan Dahl e desenvolvido junto a mais 14 colaboradores. Ele nasceu
pela observação de como os servidores web trabalhavam e se comportavam nesta época.
Ele analisou que ações simples de uma aplicação web podem realizar muitas requisições, como o carregar de
uma barra de progresso, gerando consumo excessivo de recursos no servidor(CPU, RAM, etc...).
Apresentou na “JSConf EU” uma combinação do motor Javascript V8, com um event-loop fornecido por uma
API de Input/Output de baixo nível chamada libuv, feita em C++.
Apresentação original:
https://pt.slideshare.net/AartiParikh/original-slides-from-ryan-dahls-nodejs-intro-talk
Node.js 2
O que é
O Node.js (Node) para o Ryan Dahl é um “conjunto de bibliotecas que são executadas no mecanismo V8,
permitindo executar o código Javascript no servidor”.
De forma muito resumida, ele permite que executemos Javascript no servidor, mantendo seu conceito de single-
thread, sem bloquear as requisições ou execuções.
Node.js 3
Funcionamento – Outros servidores
Normalmente, os servidores de aplicações web criam uma thread para cada requisição, podendo assim processar
o que foi solicitado, sem bloquear novas requisições.
Essas requisições podem demorar para serem processadas, deixando os recursos alocados parados até que tudo
seja concluído.
Quanto mais requisições, mais poder de CPU e quantidade de RAM são necessários.
Node.js 4
Funcionamento - Node
O Node utiliza um Event Loop que é single-thread para gerenciar as requisições. Cada nova requisição é tratada
como um evento e colocado em uma fila.
O V8 gerencia essa fila através de processamento assíncrono (não-bloqueante), nenhuma operação precisa que a
anterior seja finalizada.
Toda vez que é solicitado um processamento bloqueante(Banco de dados, Arquivos do sistema), o V8 delega
essa atividade para a Libuv, ficando disponível para novos eventos.
A Libuv é multi-thread (inicialmente com 4), aqui chamado de pool de threads, ela faz os processamentos de
rede, bancos de dados, arquivos de sistema, entre outras operações.
Node.js 5
Funcionamento – Visão Gráfica
Computation
Requests king ns
oc i o
Bl erat Thread Database
Op Pool
File System
Event
Loop
Event
Queue Single-
Thread
No
O n-B I/O Pooling,
pe lo
r a ck calculations, etc...
ti o i n
ns g
Node.js 6
NPM
O Node Package Manager(Gerenciador de Pacotes do Node) não é a mesma coisa que o Node.
É um repositório utilizado para a publicação de projetos Node de código aberto (open-source), ou seja, uma
plataforma online onde qualquer pessoa pode publicar e compartilhar ferramentas escritas em Javascript.
Node.js 7
Pacote / Módulo
Um pacote em Node.js contém todos os arquivos de que você precisa para um módulo.
Módulos são bibliotecas Javascript que você pode incluir em seu projeto.
Instalar e gerenciar módulos é uma das coisas mais básicas que você deve aprender a fazer quando começar a
usar o gerenciador de pacote Node.
Node.js 8
Utilização
Utilizado para criação de APIs(Application Programming Interface), que são interfaces que facilitam a troca de
informações entre projetos, aplicações, equipamentos, mesmo que estes não tenham sido escritos com a mesma
linguagem.
Node.js 9
Comandos comuns
Comando Descrição
npm init Cria o arquivo package.json com as definições e configurações do projeto.
Adiciona a dependência do pacote no package.json e faz sua instalação no
npm install <pacote>
projeto.
npm update Atualiza todos os pacotes do projeto.
npm update <pacote> Atualiza somente o pacote informado.
Remove a dependência do pacote no package.json e faz sua desinstalação no
npm uninstall <pacote>
projeto
Faz a instalação global do pacote, permite sua execução direta pelo prompt de
npm install –g <pacote>
comando.
npm uninstall –g <pacote> Faz a desinstalação global do pacote.
Node.js 10
Instalação
O node está disponível para sistemas operacionais Windows, Linux e Mac.
Para instalação no Windows e Mac, recomendo o download através da página oficial: https://nodejs.org/
Node.js 11