Node.js for Noobs

23
Node.js for noobs Caio Ribeiro Pereira crpwebdev.com

Transcript of Node.js for Noobs

Node.js for noobsCaio Ribeiro Pereira

crpwebdev.com

About me

Web Developer (Entusiasta JS)

Blogger (udgwebdev.com)

Escritor (Casa do Código)

O que vamos ver?

Node.js

Big players

NPM (Node Package Manager)

Socket.IO

Microblog realtime na prática

nodejs.org

Características do Node.js

Plataforma web/mobile/desktop

JavaScript Server-side

Non-blocking I/O

Programação Async e Sync

Desenvolvimento modular

Sobre a plataformaCompatível nativamente:

HTTP/HTTPS

TCP/UDP

DNS

WebSockets

E muito mais via módulos 3rd-party!

JavaScript V8 + Server-side = Node.js

Node.js usa motor JavaScript V8, o mesmo usado no Google Chrome

Non-Blocking I/O

Node.js roda em single-thread

Não existe dead-locks

Execução de I/O é não-blocante

Funções async são não-blocante

Non-blocking vs Blocking

Exemplo de I/O blocante

Non-blocking vs Blocking

Exemplo de I/O não blocante

Programação Async

Event-loop é o mecanismo para processamento async no Node.js

Big players

npmjs.org

Node Package Manager

Gerenciador de dependências

+170k de módulos Node.js

+20 milhões de downloads por dia!

Integrado no Node.js desde versão 0.6.0

Principais comandos npm

npm init - Cria um package.json

npm install <módulo> - instala um módulo

npm remove <módulo> - remove um módulo

npm update <módulo> - atualiza um módulo

Mais comandos do npm https://docs.npmjs.com

Anatomia do package.json

{ “name”: “nome-do-modulo”, “description”: “descricao do modulo”, “version”: “1.0.0”, “author”: “Nome <email>”, “dependencies”: { "moduloX": "1.0.0", "moduloY": "2.0.0" }

}

Socket.IOWrapper do protocolo WebSocket

Comunicação bidirecional (realtime)

Comunicação via eventos

Faz fallback em browsers antigos

FlashSocket

Ajax Long-Pooling

Para instalar: npm install socket.io

Microblog realtime na prática

github.com/caio-ribeiro-pereira/microblog

Perguntas?

Thanks :)