SlideShare uma empresa Scribd logo
A explosão do Node.js
      JavaScript é o novo preto
                      Nando Vieira
Sobre mim.
@fnando
http://nandovieira.com.br
SIMPLESIDEIAS.COM.BR
codeplane.com.br
ode.c om.br
how   toc
Standard library.
Timers, Process, Events, Util, Buffer,
Crypto, TLS/SSL, FileSystem, Net, DNS,
HTTP/HTTPS, URL, UDP.
Ecossistema.
O Node.js é novo, mas já tem muita coisa.
Database.
Mysql, Redis, MongoDB, CouchDB.
HTTP.
Connect e Express.
Templating.
Jade, EJS, Haml, Sass.
Realtime.
módulo net, Socket.IO, Now.js, Faye.
Deploy.
No.de, Nodester, Nodejitsu, Duostack,
Heroku, Cluster, Upstart/init.d.
Servidor HTTP - Node.js


var http = require("http");

http.createServer(function (request, response) {
  response.end("Hello TDC 2011!n");
}).listen(2345);
Chat TCP
var net = require("net")
  , emitter = new process.EventEmitter()
;

net.createServer(function(socket){
  emitter.on("message", function(sender, message){
    if (socket.writable) {
      socket.write(socket.remoteAddress + "> " + message);
    }
  });

  socket.on("data", function(data){
    emitter.emit("message", socket, data)
  });
}).listen(2345, "kernelpanic.local");
Presentta.
Um sistema de treinamento online.
Um monte de coisas.
Node.js + Ruby + Rails + Flash + Linux +
Erlang + WebSockets.
Microfones
                                            Qualidade do
Navegação de slides                            Áudio




                                                   !"#$
                      Ativa screensharing
Flash.
Streaming de áudio e vídeo.
Comunicação.
Protocolo JSON.
JSON.stringify({
  type: "new_message",
  message: "My new message",
  user: 1
});
JSON.load(payload);
JavaScript.
Closures, funções anônimas e
escopo de variáveis.
Escopo de variáveis.
Escopo de variáveis


var someVariable = "global variable!";

console.log(someVariable); // global variable

function someFunction() {
  console.log(someVariable); // global variable
}

someFunction();
Escopo de variáveis

var someVariable = "global variable!";

console.log(someVariable); // global variable

function someFunction() {
  var someVariable = "local variable";
  console.log(someVariable); // local variable
}

someFunction();
Escopo de variáveis

var someVariable = "global variable!";

console.log(someVariable); // global variable

function someFunction() {
  var someVariable = "local variable";
  console.log(someVariable); // local variable
  console.log(this.someVariable); // global variable
}

someFunction();
this.
É o dono da função executada.
Escopo de variáveis




function someFunction(){
   return this;
};

someFunction() === this;
Escopo de variáveis



function someFunction(){
   return this;
};

var items = [];
someFunction.call(items) === items;
Função anônima.
Função que foi definida sem um nome.
Funções anônimas




function someFunction() {
  // your code
}

someFunction.name; // "someFunction"
Funções anônimas




var someFunction = function() {
   // your code
};

someFunction.name; // ""
Funções anônimas




setTimeout(function(){
  // your code
});
Funções anônimas




(function(){
  // your code
})();
Funções anônimas




http.createServer(function(req, res){
  // add listeners
}).listen(2345);
Closures.
Funções que guardam o escopo de
variáveis quando foram definidas.
Closures

var handlers = [];

for (var i = 0; i < 5; i++) {
  handlers.push(function(){
    console.log(i);;
  });
}

console.log(handlers.length); // 5
handlers[0](); // 5
handlers[1](); // 5
Closures
var handlers = [];

function handler(number) {
  return function() { console.log(number); };
}

for (var i = 0; i < 5; i++) {
  handlers.push(handler(i));
}

handlers[0](); // 0
handlers[1](); // 1
Closures
var handlers = [];

for (var i = 0; i < 5; i++) {
  (function(number){
    handlers.push(function(){
      console.log(number);
    });
  })(i);
}

handlers[0](); // 0
handlers[1](); // 1
Entenda JavaScript.
Node.js é fácil. JavaScript, nem tanto.
Dúvidas?
nandovieira.com.br
simplesideias.com.br
   howtocode.com.br
            @fnando

Mais conteúdo relacionado

Mais procurados

DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
Suissa
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
Eduardo Bohrer
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
Edgar Silva
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
Nuno Paz
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produção
Artur Felipe Sousa
 
Aplicações web realtime
Aplicações web realtimeAplicações web realtime
Aplicações web realtime
Fabio Janiszevski
 
Introducao rubyonrails
Introducao rubyonrailsIntroducao rubyonrails
Introducao rubyonrails
Douglas Camargo
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SP
Arthur Fücher
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
Rafael Soares
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
Caio Cutrim
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
Filipe Falcão
 
GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredos
Caio Cutrim
 
Criando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutosCriando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutos
Fernando Mercês
 
Fabric
FabricFabric
Fabric
Ítalo Rossi
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagens
Rodrigo Matheus
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
Emerson Macedo
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
Ari Stopassola Junior
 

Mais procurados (20)

DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produção
 
Aplicações web realtime
Aplicações web realtimeAplicações web realtime
Aplicações web realtime
 
Introducao rubyonrails
Introducao rubyonrailsIntroducao rubyonrails
Introducao rubyonrails
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SP
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredos
 
Criando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutosCriando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutos
 
Fabric
FabricFabric
Fabric
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagens
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 

Semelhante a A explosão do Node.js: JavaScript é o novo preto

TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
Rafael Benevides
 
Apresentação Phonegap
Apresentação PhonegapApresentação Phonegap
Apresentação Phonegap
Paulo Vitor Mira Fonseca
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando Gearman
Elton Minetto
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMC
Alisson Agiani
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
Gabriel Moura
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
Victor Hugo Germano
 
Java7 tdc2011
Java7 tdc2011Java7 tdc2011
Java7 tdc2011
Eder Magalhães
 
Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
Rodrigo Cândido da Silva
 
Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011Henrique Gogó
 
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
iMasters
 
Boas Práticas em jQuery
Boas Práticas em jQueryBoas Práticas em jQuery
Boas Práticas em jQuery
William Bruno Moraes
 
Javascript
JavascriptJavascript
Javascript
Fernando Simeone
 
Javascript para CSharpers 2 - Functions
Javascript para CSharpers   2 - FunctionsJavascript para CSharpers   2 - Functions
Javascript para CSharpers 2 - FunctionsWesley Lemos
 
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )João Moura
 
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Daniel Sobral
 
Golang para desenvolvedores pragmáticos parte 2
Golang para desenvolvedores pragmáticos  parte 2Golang para desenvolvedores pragmáticos  parte 2
Golang para desenvolvedores pragmáticos parte 2
Wilson Júnior
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com Ajax
Adler Medrado
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-android
Alberto Souza
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
Caelum
 

Semelhante a A explosão do Node.js: JavaScript é o novo preto (20)

TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 
Apresentação Phonegap
Apresentação PhonegapApresentação Phonegap
Apresentação Phonegap
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando Gearman
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMC
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
 
Java7 tdc2011
Java7 tdc2011Java7 tdc2011
Java7 tdc2011
 
Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011
 
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
 
Boas Práticas em jQuery
Boas Práticas em jQueryBoas Práticas em jQuery
Boas Práticas em jQuery
 
Javascript
JavascriptJavascript
Javascript
 
Javascript para CSharpers 2 - Functions
Javascript para CSharpers   2 - FunctionsJavascript para CSharpers   2 - Functions
Javascript para CSharpers 2 - Functions
 
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
 
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
 
Golang para desenvolvedores pragmáticos parte 2
Golang para desenvolvedores pragmáticos  parte 2Golang para desenvolvedores pragmáticos  parte 2
Golang para desenvolvedores pragmáticos parte 2
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com Ajax
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-android
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 

Mais de Nando Vieira

Metaprogramming 101
Metaprogramming 101Metaprogramming 101
Metaprogramming 101Nando Vieira
 
Ruby Metaprogramming
Ruby MetaprogrammingRuby Metaprogramming
Ruby MetaprogrammingNando Vieira
 
Testando Rails apps com RSpec
Testando Rails apps com RSpecTestando Rails apps com RSpec
Testando Rails apps com RSpec
Nando Vieira
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9
Nando Vieira
 
jQuery - Javascript para quem não sabe Javascript
jQuery - Javascript para quem não sabe JavascriptjQuery - Javascript para quem não sabe Javascript
jQuery - Javascript para quem não sabe JavascriptNando Vieira
 
Test-driven Development no Rails - Começando com o pé direito
Test-driven Development no Rails - Começando com o pé direitoTest-driven Development no Rails - Começando com o pé direito
Test-driven Development no Rails - Começando com o pé direitoNando Vieira
 

Mais de Nando Vieira (6)

Metaprogramming 101
Metaprogramming 101Metaprogramming 101
Metaprogramming 101
 
Ruby Metaprogramming
Ruby MetaprogrammingRuby Metaprogramming
Ruby Metaprogramming
 
Testando Rails apps com RSpec
Testando Rails apps com RSpecTestando Rails apps com RSpec
Testando Rails apps com RSpec
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9
 
jQuery - Javascript para quem não sabe Javascript
jQuery - Javascript para quem não sabe JavascriptjQuery - Javascript para quem não sabe Javascript
jQuery - Javascript para quem não sabe Javascript
 
Test-driven Development no Rails - Começando com o pé direito
Test-driven Development no Rails - Começando com o pé direitoTest-driven Development no Rails - Começando com o pé direito
Test-driven Development no Rails - Começando com o pé direito
 

A explosão do Node.js: JavaScript é o novo preto