SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
Javascript Server Side
SUMÁRIO
• O que é NodeJS?
• Single-thread	

• Event-loop	

• Instalação e Configuração
• O Básico com NodeJS
• Iniciando um Projeto	

• package.json	

• Servidor HTTP	

• Assíncrono x Síncrono	

• Módulo	

• Express - use um framework
• Criando uma API para Registro de Log
• RESTful
• MongoDB
• Node em Produção
NODEJSO que é NodeJS?
- Arquitetura non-blocking thread e event-driven.Aproveita melhor os recursos de memória e
processamento do servidor;	

- Altamente escalável e de baixo nível. Permite usar protocolos de rede e bibliotecas para acessar recursos
do OS;	

- A linguagem de programação é o Javascript. Permite trabalhar no client e server side com a mesma
linguagem;	

- Engine V8 desenvolvida pela Google, mesma utilizada no Google Chrome. Escrita em C++ e ultra rápida.	

!
O NodeJS não é?
Não é um servidor web tradicional como:Apache eTomcat.	

!
! Aconselhável Não aconselhável
- API RESTful	

- Aplicação RealTime (Ex.: Chat, Gráficos, outros)	

- Filas Enormes (Ex. que poderia ser usado: tweets)	

- Streaming de dados	

- Coleta de Dados Estatísticos	

!
Em resumo o NodeJS é muito utilizado em Arquitetura
Orientada a Serviço (SOA em inglês).	

!
Projetos em Node https://github.com/joyent/node/wiki/
Projects,-Applications,-and-Companies-Using-Node
- Sites	

- CMS	

- HTML Apps	

- CRUD simples	

- Aplicações pesadas de Banco de Dados Relacional	

- Aplicação pesadas para o CPU (Ex.: Manipulação de
vídeos; Business Inteligence; ERP; )	

!
O NodeJS geralmente não é recomendado para aplicações
tradicionais.
NODEJS
Single-thread
O NodeJS trabalha com single-
thread, ou seja, a aplicação terá
instância de um processo. Mas é
possível criar um sistema concorrente
usando clusters que é um módulo
nativo do Node.
NODEJS
Event-loop
O NodeJS é orientado a eventos. Ele trabalha com eventos de I/O do servidor, como por exemplo, os
eventos connect de um bd, open de um arquivo, data de um streaming, e outros.	

O event-loop é um agente que executa um loop infinito que fica escutando e emitindo eventos.
INSTALAÇÃO E CONFIGURAÇÃO
Windows
Faça o download no site http://nodejs.org/download/ e realize a instalação. 	

Após ter instalado verifique se ocorreu tudo bem.Abra o cmd e execute:	

node -v
npm -v
!
Ubuntu
1 - Instale as bibliotecas que precisaremos	

sudo apt-get install g++ curl libssl-dev apache2-utils
sudo apt-get install git-core
2 - Obtenha o NodeJS	

git clone git://github.com/ry/node.git
cd node
3 - Instale o NodeJS	

./configure
make
sudo make install
4 -Verifique se a instalação ocorreu bem	

node -v
npm -v
O BÁSICO
Iniciando um Projeto
!
mkdir helloworld && cd helloworld
npm init
!
package.json
Após a inicialização do projeto será gerado um arquivo chamado package.json. Esse é o arquivo usado pelo node para armazenar algumas informações e as
dependências do projeto.	

!
{
"name": "helloworld",
"version": "1.0.0",
"description": “Arquivo para iniciar o projeto.”,
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": “Gustavo Correa",
"license": "MIT"
}
!
Criaremos o arquivo helloworld.js para o nosso projeto Olá Mundo! com o conteúdo.	

!
console.log(“Olá mundo!”);
!
E rode o comando node helloworld para executar o projeto.	

!
O BÁSICO
Servidor HTTP
Com node podemos trabalhar com inúmeros protocolos tais como: HTTP, HTTPS, FTP, SSH, DNS,TCP, UDP,
WebSockets e alguns outros disponíveis em módulos não oficiais.	

!
O protocolo HTTP é um dos mais utilizados para desenvolvimento de sistemas web e node prover um
módulo nativo.	

!
var html = require("html");
!
html.createServer(funciton(req, res){
res.createHeader(200, {"Content-type" : "text/plain"});
res.write("Resposta HTTP!");
res.end();
}).listen(3000);
!
!
!
O BÁSICO
Assíncrono x Síncrono
A programação assíncrona permite tirar vantagem da arquitetura não bloqueante do Node.js. Programando de
forma assíncrona as operações do programa ocorrem em paralelo acelerando os eventos de entrada e saída.
Essa técnica utiliza funções callbacks do Javascript, e mantém apenas uma thread diferente como o que ocorre
com o Java, por exemplo. Porém, é importante ressaltar que você não tem nenhum controle sobre a ordem de
execução das operações assíncronas.	

!
O Node.js também permite trabalhar de forma síncrona, mas não é aconselhável. Essa forma de programar
não beneficiar a arquitetura do Node e tende a bloqueia a aplicação até a finalização da operação. 	

!
Síncrono	

 	

 	

 	

 	

 	

 	

 Assíncrono	

!
!
!
O BÁSICO
Módulos
Um módulo é qualquer coisa que pode ser carregado com require() em um programa de Node.js.	

!
Ex.:	

!
// arquivo math.js
var math = {
sum : function(x, y){
return x + y;
},
sub : function(x, y){
return x - y;
},
mult : function(x, y){
return x * y;
},
div : function(x, y){
return x / y;
}
}
module.exports = math;
!
!
// arquivo calculator.js
var calc = require("./math");
console.log("2 + 2 = " + calc.sum(2, 2));
console.log("8 - 4 = " + calc.sub(8, 4));
console.log("4 * 1 = " + calc.mult(2, 2));
console.log("8 / 2 = " + calc.div(8, 2));
EXPRESS	

HTTP://EXPRESSJS.COM/
Introdução
Express é um framework muito utilizado para quem desenvolve com NodeJS. Ele é minimalista, flexível e
contém um robusto conjunto de recursos para desenvolver aplicações web, como: MVR(Model-View-Routes),
MVC(Model-View-Controller), Roteamento de urls via callbacks, Middleware, Interface RESTful, Suporte a File
Upload,Template Engine e muito mais. 	

O Express tem um escopo mais simples que frameworks como Rails, Django e CakePHP, ele foi baseado no
Sinatra.	

!
Instalação
sudo npm install -g express-generator
Uso
express --css less --ejs newapp
cd newapp && npm install
npm start
Acesso
Acesse a url http://localhost:3000 no navegador.
API RESTful para Geração de Logs
MONGODB
Introdução
O Nodejs possui inúmeros módulos para banco de dados, tanto relacional quando não relacional. Com banco
de dados NoSQL conseguimos tirar um bom proveito da arquitetura do Nodejs criando aplicações realmente
escaláveis.	

!
Instalação
Utilizaremos o MongoDB para persistir os logs de nossa API, para tal instalaremos o módulo mongoose. 	

npm install mongoose --save
Obs.: Para instalação do MongoDB propriamente dito aconselho seguir o guia do site do MongoDB http://
docs.mongodb.org/manual/installation/ .	

!
NODEJS EM PRODUÇÃO
Serviços para NodeJS
• Heroku	

• NodeJitsu	

• DigitalOcean	

• Getup (Brasileira)	

!
Servidor
• Amazon EC2 / Servidor particular	

forever - https://github.com/nodejitsu/forever	

!
!
!
!
sudo npm install forever -g
forever -m 5 project/to/your/main.js
cd /path/to/your/project
npm install forever-monitor
!
//main.js
var forever = require(“forever-monitor”);
var Monitor = forever.Monitor;
!
var child = new Monitor(“index.js”, {
max : 10, silent : true, kill : true, logFile : “forever.log”,
outFile : “app.log”, errFile : “error.log"
});
OBRIGADO!
Palestrante
Gustavo Corrêa Alves	

http://www.gustavocalves.com.br	

https://github.com/gcajpa	

http://br.linkedin.com/in/gustavocorreaalves/	

!
!

Mais conteúdo relacionado

Mais procurados

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 BranasRodrigo Branas
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensRodrigo Matheus
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Pablo Souza
 
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 utilizarFilipe Falcão
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigitalJust Digital
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsCaio Ribeiro Pereira
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros PassosJackson F. de A. Mafra
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingRhuan Karlus Silva
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascriptLaís Lima
 

Mais procurados (20)

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
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagens
 
Por que Node JS?
Por que Node JS?Por que Node JS?
Por que Node JS?
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?
 
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
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.js
 
Javascript nos dias de hoje
Javascript nos dias de hojeJavascript nos dias de hoje
Javascript nos dias de hoje
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Node.js for Noobs
Node.js for NoobsNode.js for Noobs
Node.js for Noobs
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Introdução ao Nodejs
Introdução ao NodejsIntrodução ao Nodejs
Introdução ao Nodejs
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and Multithreading
 
JEE nas nuvens: uma introdução ao openshift
JEE nas nuvens:  uma introdução ao openshiftJEE nas nuvens:  uma introdução ao openshift
JEE nas nuvens: uma introdução ao openshift
 
Node.js
Node.jsNode.js
Node.js
 
Jugvale
JugvaleJugvale
Jugvale
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
Conhecendo mundo Node.js
Conhecendo mundo Node.jsConhecendo mundo Node.js
Conhecendo mundo Node.js
 

Semelhante a NodeJS Server Side Essentials

Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJSAlex Camargo
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo maisakamud
 
Primeiros passos no Vue.js
Primeiros passos no Vue.jsPrimeiros passos no Vue.js
Primeiros passos no Vue.jsJoel Rodrigues
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebIsrael Messias
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Fabrício Lopes Sanchez
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixNatanael Fonseca
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
Node js - O poder do JavaScript do lado do servidor
Node js  - O poder do JavaScript do lado do servidorNode js  - O poder do JavaScript do lado do servidor
Node js - O poder do JavaScript do lado do servidorRomulo Fagundes
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 

Semelhante a NodeJS Server Side Essentials (20)

Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJS
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Minicurso Node-RED.pdf
Minicurso Node-RED.pdfMinicurso Node-RED.pdf
Minicurso Node-RED.pdf
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais
 
Primeiros passos no Vue.js
Primeiros passos no Vue.jsPrimeiros passos no Vue.js
Primeiros passos no Vue.js
 
NoSQL + Node.js
NoSQL + Node.jsNoSQL + Node.js
NoSQL + Node.js
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente Web
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Utilizando Docker para escalonar aplicações Node.Js
Utilizando Docker para escalonar aplicações Node.JsUtilizando Docker para escalonar aplicações Node.Js
Utilizando Docker para escalonar aplicações Node.Js
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Node js - O poder do JavaScript do lado do servidor
Node js  - O poder do JavaScript do lado do servidorNode js  - O poder do JavaScript do lado do servidor
Node js - O poder do JavaScript do lado do servidor
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 

NodeJS Server Side Essentials

  • 2. SUMÁRIO • O que é NodeJS? • Single-thread • Event-loop • Instalação e Configuração • O Básico com NodeJS • Iniciando um Projeto • package.json • Servidor HTTP • Assíncrono x Síncrono • Módulo • Express - use um framework • Criando uma API para Registro de Log • RESTful • MongoDB • Node em Produção
  • 3. NODEJSO que é NodeJS? - Arquitetura non-blocking thread e event-driven.Aproveita melhor os recursos de memória e processamento do servidor; - Altamente escalável e de baixo nível. Permite usar protocolos de rede e bibliotecas para acessar recursos do OS; - A linguagem de programação é o Javascript. Permite trabalhar no client e server side com a mesma linguagem; - Engine V8 desenvolvida pela Google, mesma utilizada no Google Chrome. Escrita em C++ e ultra rápida. ! O NodeJS não é? Não é um servidor web tradicional como:Apache eTomcat. ! ! Aconselhável Não aconselhável - API RESTful - Aplicação RealTime (Ex.: Chat, Gráficos, outros) - Filas Enormes (Ex. que poderia ser usado: tweets) - Streaming de dados - Coleta de Dados Estatísticos ! Em resumo o NodeJS é muito utilizado em Arquitetura Orientada a Serviço (SOA em inglês). ! Projetos em Node https://github.com/joyent/node/wiki/ Projects,-Applications,-and-Companies-Using-Node - Sites - CMS - HTML Apps - CRUD simples - Aplicações pesadas de Banco de Dados Relacional - Aplicação pesadas para o CPU (Ex.: Manipulação de vídeos; Business Inteligence; ERP; ) ! O NodeJS geralmente não é recomendado para aplicações tradicionais.
  • 4. NODEJS Single-thread O NodeJS trabalha com single- thread, ou seja, a aplicação terá instância de um processo. Mas é possível criar um sistema concorrente usando clusters que é um módulo nativo do Node.
  • 5. NODEJS Event-loop O NodeJS é orientado a eventos. Ele trabalha com eventos de I/O do servidor, como por exemplo, os eventos connect de um bd, open de um arquivo, data de um streaming, e outros. O event-loop é um agente que executa um loop infinito que fica escutando e emitindo eventos.
  • 6. INSTALAÇÃO E CONFIGURAÇÃO Windows Faça o download no site http://nodejs.org/download/ e realize a instalação. Após ter instalado verifique se ocorreu tudo bem.Abra o cmd e execute: node -v npm -v ! Ubuntu 1 - Instale as bibliotecas que precisaremos sudo apt-get install g++ curl libssl-dev apache2-utils sudo apt-get install git-core 2 - Obtenha o NodeJS git clone git://github.com/ry/node.git cd node 3 - Instale o NodeJS ./configure make sudo make install 4 -Verifique se a instalação ocorreu bem node -v npm -v
  • 7. O BÁSICO Iniciando um Projeto ! mkdir helloworld && cd helloworld npm init ! package.json Após a inicialização do projeto será gerado um arquivo chamado package.json. Esse é o arquivo usado pelo node para armazenar algumas informações e as dependências do projeto. ! { "name": "helloworld", "version": "1.0.0", "description": “Arquivo para iniciar o projeto.”, "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": “Gustavo Correa", "license": "MIT" } ! Criaremos o arquivo helloworld.js para o nosso projeto Olá Mundo! com o conteúdo. ! console.log(“Olá mundo!”); ! E rode o comando node helloworld para executar o projeto. !
  • 8. O BÁSICO Servidor HTTP Com node podemos trabalhar com inúmeros protocolos tais como: HTTP, HTTPS, FTP, SSH, DNS,TCP, UDP, WebSockets e alguns outros disponíveis em módulos não oficiais. ! O protocolo HTTP é um dos mais utilizados para desenvolvimento de sistemas web e node prover um módulo nativo. ! var html = require("html"); ! html.createServer(funciton(req, res){ res.createHeader(200, {"Content-type" : "text/plain"}); res.write("Resposta HTTP!"); res.end(); }).listen(3000); ! ! !
  • 9. O BÁSICO Assíncrono x Síncrono A programação assíncrona permite tirar vantagem da arquitetura não bloqueante do Node.js. Programando de forma assíncrona as operações do programa ocorrem em paralelo acelerando os eventos de entrada e saída. Essa técnica utiliza funções callbacks do Javascript, e mantém apenas uma thread diferente como o que ocorre com o Java, por exemplo. Porém, é importante ressaltar que você não tem nenhum controle sobre a ordem de execução das operações assíncronas. ! O Node.js também permite trabalhar de forma síncrona, mas não é aconselhável. Essa forma de programar não beneficiar a arquitetura do Node e tende a bloqueia a aplicação até a finalização da operação. ! Síncrono Assíncrono ! ! !
  • 10. O BÁSICO Módulos Um módulo é qualquer coisa que pode ser carregado com require() em um programa de Node.js. ! Ex.: ! // arquivo math.js var math = { sum : function(x, y){ return x + y; }, sub : function(x, y){ return x - y; }, mult : function(x, y){ return x * y; }, div : function(x, y){ return x / y; } } module.exports = math; ! ! // arquivo calculator.js var calc = require("./math"); console.log("2 + 2 = " + calc.sum(2, 2)); console.log("8 - 4 = " + calc.sub(8, 4)); console.log("4 * 1 = " + calc.mult(2, 2)); console.log("8 / 2 = " + calc.div(8, 2));
  • 11. EXPRESS HTTP://EXPRESSJS.COM/ Introdução Express é um framework muito utilizado para quem desenvolve com NodeJS. Ele é minimalista, flexível e contém um robusto conjunto de recursos para desenvolver aplicações web, como: MVR(Model-View-Routes), MVC(Model-View-Controller), Roteamento de urls via callbacks, Middleware, Interface RESTful, Suporte a File Upload,Template Engine e muito mais. O Express tem um escopo mais simples que frameworks como Rails, Django e CakePHP, ele foi baseado no Sinatra. ! Instalação sudo npm install -g express-generator Uso express --css less --ejs newapp cd newapp && npm install npm start Acesso Acesse a url http://localhost:3000 no navegador.
  • 12. API RESTful para Geração de Logs
  • 13. MONGODB Introdução O Nodejs possui inúmeros módulos para banco de dados, tanto relacional quando não relacional. Com banco de dados NoSQL conseguimos tirar um bom proveito da arquitetura do Nodejs criando aplicações realmente escaláveis. ! Instalação Utilizaremos o MongoDB para persistir os logs de nossa API, para tal instalaremos o módulo mongoose. npm install mongoose --save Obs.: Para instalação do MongoDB propriamente dito aconselho seguir o guia do site do MongoDB http:// docs.mongodb.org/manual/installation/ . !
  • 14. NODEJS EM PRODUÇÃO Serviços para NodeJS • Heroku • NodeJitsu • DigitalOcean • Getup (Brasileira) ! Servidor • Amazon EC2 / Servidor particular forever - https://github.com/nodejitsu/forever ! ! ! ! sudo npm install forever -g forever -m 5 project/to/your/main.js cd /path/to/your/project npm install forever-monitor ! //main.js var forever = require(“forever-monitor”); var Monitor = forever.Monitor; ! var child = new Monitor(“index.js”, { max : 10, silent : true, kill : true, logFile : “forever.log”, outFile : “app.log”, errFile : “error.log" });