O que e Node.js?De acordo com o site oficial - nodejs.org - e uma plataforma construida em cima de um mecanismo que interpreta codigo Javascript do lado do Servidor, chamado V8 - da Google. Este mecanismo e utilizado inclusive pelo Chrome.Ele foi desenvolvido em C++ pelo desenvolvedor [Ryan Dahl] em 2009.Neste artigo vamos aprender como criar codigos Javascript do lado do servidor Windows (node.js roda tambem em Linux e Mac) que possa ser consumido por qualquer Client.InstalacaoBaixe o instalador a partir do website oficial - nodejs.org - eu vou pegar a versao 6.5.0. Rode o arquivo MSI e siga os passos do wizard.Apos a instalacao voce ja pode testar o componente abrindo o Command Prompt e digitar [node]Hello WorldPara todos nossos exercicios vamos utilizar o Visual Studio 2015 Community Edition.Crie um arquivo novo no VS do tipo JS e adicione a seguinte linha de codigoconsole.log('Hello world, nodejs');Salve como helloworld.js, abre o CMD e execute o comando conforme ilustrado abaixoNode.JS ModuleNode.js prove [modulos] para nos ajudar no desenvolvimento. Voce vai perceber que com ele vamos ganhar muito tempo no desenvolvimento, eliminando muitas linhas de codigo. Provavelmente voce ja possui o gerenciador de modulos ao instalar o Node.js. Para verificar isto abra o CMD e digite npm -helpSua tela ficara conforme ilustrado abaixoNota1: Para usar o npm seu computador precisa estar conectado na internet e seu usuario precisa ter privilegios de administrador.Nota2: Toda programacao e baseada em Javascript (e o Node.js Module, como veremos), portanto o unico pre-requisito e conhecer bem este tipo de programacao.Events ModuleVamos aprender um modulo interessante que nos ajuda a programar um codigo baseado em Evento. Para tanto vamos usar o objeto [EventEmitter] para criar nossos eventos.A ideia e criar uma funcao de CallBack do Javascript e passar esta funcao como parametro para a funcao [on()] do objeto EventEmitter.Crie o seguinte codigo JSvar EventEmitter = require('events').EventEmitter;var myEmitter = new EventEmitter; var connection = function(id){ // do something console.log('client id: ' + id); }; myEmitter.on('connection', connection); myEmitter.on('message', function(msg){ // do something console.log('message: ' + msg); });Para testar escreva este scriptmyEmitter.emit('connection', 6); myEmitter.emit('connection', 8); myEmitter.emit('message', 'this is the first message'); myEmitter.emit('message', 'this is the second message'); myEmitter.emit('message', 'welcome to nodejs');Salve todo este codigo, por ex, eventDemo.js e execute-o no CMD, conforme ilustradoNotou a execucao dos eventos [connection] e [message]? Gracas ao objeto [require('events').EventEmitter] nos conseguimos anexar a function [connection] e a [message] e executa-las atraves do metodo [myEmitter.emit()].Se voce quiser executar o metodo de callback apenas uma vez, basta trocar a funcao [on()] do objeto EventEmitter para [once()].Para remover um evento voce precisa usar o metodo [removeListener] do objeto EventEmittermyEmitter.removeListener('connection',connection);Web ApplicationsCom node.js podemos criar um [web server] totalmente em JS!Node.js Module nos prove uma forma de manipulacao do protocolo HTTP, com Requests e Responses.Vamos criar um codigo que fara isto.var http = require('http'); var server = http.createServer(function (req, res) { res.write('Welcome to http nodejs'); res.end(); }); server.listen(8084); console.log('Server is running on port 8084');Salve este codigo, por ex, webDemo.jsExecute o codigo no CMD para inciarmos nosso "servidor"node webDemo.jsQuando nos executamos esta aplicacao, provavelmente vai aparecer a seguinte caixa de dialogoClique em [Permitir Acesso]Como