segunda-feira, 27 de janeiro de 2014

Node.js : Apresentando Node.js

Boa noite pessoal.

Hoje estou meio inspirado e acho que esse post vai ficar grande! 

O assunto é bem legal, muitos já ouviram falar e talvez poucos se atrevem a testar, mas hoje é o dia.



O que é Node.js?
É um interpretador JavaScript, escrito em C++, do lado do servidor e sim é Open Source

JavaScript no servidor? Algo inimaginável há um tempo atrás. O Node veio com uma proposta interessante. Ele possibilita que criemos aplicativos altamente escaláveis e que mantém milhares de conexões simultâneas. Ou seja, ao contrário do Java e algumas outras linguagens, que reservam um determinado espaço de memória(aprox. 2bm) e processamento para manter as conexões simultâneas, o Node.js cria novas instancias da aplicação, para lidar com a demanda, assim o servidor não tem que monitorar e nem requisitar mais recursos. 

Se houver grande interesse de conhecimento, pode ler algo no developerWorks da IBM:
E a trilha Node.js do Giovanni Bassi:

Tenha certeza que se você ler os links acima, não estará perdendo tempo :).

Vamos a parte prática?
A instalação do Node.js é bem simples, entrar no site e baixar:

Para os amantes do Terminal, nos nomes existem links com tutoriais mais profundos:
Mac, com o HomeBrew: 
brew install node

(Tem que instalar Python também)
sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Windows:

Feito isso, só testar com o famoso version:
node --version
v0.10.25

E tudo certo. 
Vamos fazer o clássico Hello World?

Faremos toda tarefa usando JavaScript e um pouquinho, quase nada, de HTML.
Em seu diretório favorito, crie um arquivo chamado helloworld.js e em seu interior digite e entenda:
// Carrega a biblioteca HTTP do Node.js
var http = require('http');
// Cria um serviço web para tratar a requisição de resposta da mensagem Hello World.
var server = http.createServer(function (request, response) {
  // Define os parâmetros de cabeçalho de resposta.
  response.writeHead(200, {'Content-Type': 'text/html'});
  // Escreve uma mensagem de resposta do servidor.
  response.write('<html><body><h1>Hello World!</h1></body></html>');
  // Envia uma resposta para o cliente
  response.end();
});
// Define a porta e IP que será executado a aplicação.
server.listen(3000);
// Imprime mensagem no terminal do servidor.
console.log('Servidor Node.js em execucao');

Para testar é fácil, vá até seu terminal, caminhe até o diretório do arquivo helloworld.js e digite:
node helloworld.js
Servidor Node.js em execucao

Agora é só abrir seu navegador favorito e inserir a url:

Vai ver o resultado escrito em HTML!



Quem estiver com pique, continue. Vamos tentar algo um pouco mais legal.

Imagine que você precisa requisitar ao seu servidor a soma de dois números. Se você não viu, faça esse exercício em Haskell também.

Mas vamos lá, JavaScript e tal...
Em seu diretório favorito, crie um novo arquivo chamado soma.js e em seu interior digite:
var http = require("http");
var url = require("url");

http.createServer(function(request, response) {

  response.writeHead(200, {"Content-Type": "text/plain"});
  // Pegando os parâmetros passados via URL
  var params = url.parse(request.url, true).query;
  var x = params.numberX;
  var y = params.numberY;

  var inputX = new Number(x);
  var inputY = new Number(y);
  soma = new Number(inputX + inputY);

  response.write(soma.toString());

  response.end();

}).listen(3000);

console.log("Somando dois números");

E como executar?
node soma.js

Mas ao abrir seu navegador, não estará vendo resultado algum(NaN)... Por que?
Porque não passamos nenhum parâmetro via url.
Tente de novo assim:

Entenda...
       ? Indica passagem de parâmetros
 numberX  Primeiro parâmetro
       & Indica passagem de mais de um parâmetro 
 numberY Segundo parâmetro

Verá algo muito mais legal:
7

O servidor Node.js, se emcumbiu de fazer a soma e printar na tela o resultado. "Fácil" não? 

Para fixar, vou deixar um exercício básico:
Faça uma aplicação Node.js que gera um número aleatório, no intervalo de 0 - o número passado via parâmetro.

Dica: (Math.random() * seu_numero).toFixed(0);
Assim você gera um número pseudo-randômico em JS.

A resposta está no meu GitHub. Qualquer dúvida, email-me: abner.terribili@gmail.com ou comente abaixo.


Valeu galera!



Nenhum comentário:

Postar um comentário