node.js for noobs

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

Upload: caio-ribeiro-pereira

Post on 09-Feb-2017

1.242 views

Category:

Technology


2 download

TRANSCRIPT

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 :)