On Github andrevvalle / treinamento-node-npm-vml
Créditos André Valle / @andrevalle1
Criado por Ryan Dahl em 2009
Ryan Dahl junto a 14 outras pessoas resolveram criar algo que fosse não-bloqueante (non-blocking thread ).
Uma das inspirações de Ryan Dahl para criar Node.js foi ao notar a 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 repetidamente ao servidor.
(Veremos exemplos mais tarde).
Seu desenvolvimento é mantido pela empresa
Node.js não é uma linguagem de programação
NodeJs é um interpretador de código JavaScript que funciona do lado do servidor.
Seu objetivo é facilitar a criação de aplicações de alta escalabilidade (como um servidor web), com códigos capazes de manipular dezenas de milhares de conexões simultâneas, em uma única máquina física.
O NodeJs foi baseado no interpretador V8 do Google Chrome.
(Node foi escrito em C++ e Javascript V8 com +ou- 8000 linhas em C++ e +ou- 2000 linhas de Javascript V8).
Node.js usa um modelo de I/O direcionada a evento não bloqueante.
Thread non-blocking
Os servidores Apache, Nginx ou Tomcat tem uma característica em comum, que é conhecida como modelo bloqueante.
Blocking-Thread
Isso porque o Node.js funciona por eventos assíncronos, o que não iremos ver neste momento.
IMASTERS: Event LoopO NodeJS ficou popular graças aos seus frameworks que interagem em real-time entre cliente e servidor.
Frameworks: SockJS, Socket.IO, Engine.IO são alguns exemplos disso.
Eles são compatíveis com o novo protocolo WebSockets e permitem trafegar dados através de uma única conexão bi-direcional, tratando as mensagens via eventos no JavaScript.
HTML5 ROCKS: WebSocketExemplo :D
Demo/Chat55% do tráfego na Black friday foi em um servidor Node e permaneceu estável. Enquanto outros servidores ficavam instáveis e caiam por alguns milissegundos.
Eran Hammer, Sr. Architect at Walmart, talks about how they use Node.js as a way to reinvent legacy APIs to create modern front end experiences.npm init
npm install |Módulo|
npm uninstall |Módulo|
npm update |Módulo|
{ "name": "ProjectName", "version": "1.0.0", "description": "Descrição do projeto", "main": "index.js", "author": "André Valle <andrevvalle@icloud.com>", "license": "ISC" }
npm install jquery@1.11.3
npm install jquery --save
npm install gulp --save-dev
npm install -g gulp
npm uninstall -g gulp