Node.js é uma plataforma multiplataforma baseada em JavaScript para construção de aplicações de rede assíncronas e orientadas a eventos. Foi criado em 2009 por Ryan Dahl e é mantido pela Joyent. Node.js usa um modelo de programação baseado em eventos e entradas/saídas não bloqueantes, tornando-o ideal para aplicações em tempo real com muitas conexões simultâneas.
2. node.js?
- Ryan Dahl
- Criado em 2009
- Escrito em C++ e Javascript
- Multiplataforma (Linux, Windows e Mac)
- Foco em alta escalabilidade e em tempo real
- Versão atual: 0.10.26 / Fev 18, 2014
- Open Source mantido pela Joyment
https://github.com/joyent/node
3. O que é?
- Plataforma para utlizar Javascript fora do navegador. (Focada em servidores)
- Escrita sobre interpretador V8 do Google
Ou seja, essa plataforma é escrita com códigos C++ e Javascript
- Baseada em eventos
- I/O não bloqueante
16. Quer dizer que...
- Você tem o poder do Javascript para criar aplicações orientadas a eventos e
assíncronas em qualquer máquina.
- Sua premissa é facilitar a construção de aplicações de rede (servidores web,
etc.) sem bloqueio de leitura e escrita.
- Ao instalar o node, o mesmo já vem com uma biblioteca inicial muito
poderosa.
http://nodejs.org/api
- Comunidade de desenvolvedores extremamente entusiasmada.
17. What?
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello Worldn');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
>> node hello.js
Server running at http://127.0.0.1:1337/'
18. Por que usar?
- Aplicações com dados em tempo real
- Aplicações com muitas, muitas requisições ao mesmo tempo
- Aplicações com colaboração entre muitos usuários
- Chats
- Envios de dados (upload de arquivos)
- Jogos
- Servidor para diferentes protocolos ao mesmo tempo
- APIs (Sim, web apis, bitches)
19. Por que NÃO usar?
- Aplicações que utilizam muito processamento (redimensionamento de
imagens, renderização de vídeos, cálculos matemáticos pesados, etc.)
- Simples páginas HTML
- Aplicações baseadas em conteúdo, CRUDs, com muitas regras de negócio
- Aplicações dependentes de bancos de dados relacionais
21. Então, node.js é...
- Plataforma para desenvolver aplicações com Javascript
- Com foco em para alta escalabilidade para alta concorrência
- Performance com altas cargas de acesso
- Multiplataforma
- Comunidade de desenvolvedores super ativa
- Ainda imatura
- Não soluciona todos os problemas do mundo
24. The good stuff
- Javascript
- Fácil de instalar (hoje é)
- Multiplataforma
- V8
- Pacotes, muitos pacotes
- Event Loop
- Conduz os desenvolvedores ao mindset de “Evented/Async I/O”
25. Event Loop
- Single-Thread que escuta por todas requisições ao servidor
- Ao receber req. que precisam realizar operações bloqueantes (acesso a disco,
computação pesada, etc), criar uma tarefa async para o SO e guarda um callback para
esse tarefa
- Continua recebendo outras requições, até receber a resposta da tarefa enviado o SO,
então executa o callback, espera até estar livre e executa esta respota
- Abstrai toda implementação de gerenciamento de threads, consumo de memória, etc
30. Alguns problemas
- É Javascript
Algumas bizarrices (www.wtfjs.com)
Facilidade em não seguir padrões
Não é orientado a objetos
- Por default, exceções matam o processo
- Vazamentos de memória difíceis de encontrar
- Ainda é beta (~v 0.10.26)
- Single thread trava em códigos de alto processamento
- Falta de maturidade para utilizar bancos de dados relacionais
31. “I got 99 problems but a callback aint one”
Callback HELL
32. npm - node packeges manager
- É o gerenciador de pacotes oficial do node.
- Nele já são mais de 61k pacotes escritos pela comunidade de
desenvolvedores.
- Instalado junto ao node, que é uma dependência (óbvia) para o uso do npm.
- Utilizado através da linha de comando, possuí uma API poderosa para a
instalação e busca de pacotes. https://www.npmjs.org/doc/
42. Show me the links!!
http://nodebr.com/
http://howtonode.org/
http://nodejs.org/
https://github.com/joyent/node
http://www.nodebeginner.org/
http://callbackhell.com/
Why The Hell Would I Use Node.js? A Case-by-Case Introduction
Node Tools for VS - Youtube
Introducing node.js Tools for Visual Studio
Node.js para iniciantes
O que é npm do nodejs
O que exatamente é o Node.js?
What are the disadvantages of using Node.js?
Node.js for Beginners
Java EE threads v/s Node.js – which is better for concurrent data processing operations
Beginner’s Guide To Node.Js (Server-Side JavaScript)
Node.js para leigos
43. Show me the links!!
Slideshare - Node.js: serious business
Slideshare - Node.js campus party brasil 2011
Future-proofing Your Apps: Cloud Foundry and Node.js
7 minimal Node.js webframeworks
Concurrent programming for scalable web architetures
You’ll never believe how LinkedIn built its new iPad app (exclusive) [Linkedin]
Blazing fast node.js: 10 performance tips from LinkedIn Mobile [Linkedin]
Here's why you should be happy that Microsoft is embracing Node.js [Microsoft]
Yahoo! Announces Cocktails
Shaken, Not Stirred [Yahoo]
Why Walmart is using Node.js [Walmart]
Fluent 2013: Bill Scott, "Clash of the Titans: Releasing the Kraken | NodeJS @paypal" [Paypal]