SlideShare uma empresa Scribd logo
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 (20)

PDF
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
PPTX
O que é nodejs, cases e vantagens
Rodrigo Matheus
 
PDF
Por que Node JS?
Austin Felipe Santos
 
PPTX
Node.js - Devo adotar na minha empresa?
Pablo Souza
 
PDF
Node.js: 5 razões para começar a utilizar
Filipe Falcão
 
PPT
Nodejs justdigital
Just Digital
 
PPT
Light Talk: Introdução sobre Node.js
Caio Ribeiro Pereira
 
PPT
Javascript nos dias de hoje
Caio Ribeiro Pereira
 
PPTX
Apresentação
Marcelo de castro
 
PDF
Node.js for Noobs
Caio Ribeiro Pereira
 
PPTX
Javascript por debaixo dos panos
Laís Lima
 
PPTX
Introdução ao Nodejs
Márcio Silvestroni
 
PPTX
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Jackson F. de A. Mafra
 
PDF
Vagrant - ambiente de desenvolvimento virtualizado
Vinícius Krolow
 
PPTX
NodeJS Under the Hood - Concurrency and Multithreading
Rhuan Karlus Silva
 
PDF
JEE nas nuvens: uma introdução ao openshift
Ricardo Martinelli de Oliveira
 
PPTX
Node.js
luizhse
 
PPTX
Jugvale
Renzo Nuccitelli
 
PPTX
Testes com javascript
Laís Lima
 
PDF
Conhecendo mundo Node.js
Caio Ribeiro Pereira
 
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
O que é nodejs, cases e vantagens
Rodrigo Matheus
 
Por que Node JS?
Austin Felipe Santos
 
Node.js - Devo adotar na minha empresa?
Pablo Souza
 
Node.js: 5 razões para começar a utilizar
Filipe Falcão
 
Nodejs justdigital
Just Digital
 
Light Talk: Introdução sobre Node.js
Caio Ribeiro Pereira
 
Javascript nos dias de hoje
Caio Ribeiro Pereira
 
Apresentação
Marcelo de castro
 
Node.js for Noobs
Caio Ribeiro Pereira
 
Javascript por debaixo dos panos
Laís Lima
 
Introdução ao Nodejs
Márcio Silvestroni
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Jackson F. de A. Mafra
 
Vagrant - ambiente de desenvolvimento virtualizado
Vinícius Krolow
 
NodeJS Under the Hood - Concurrency and Multithreading
Rhuan Karlus Silva
 
JEE nas nuvens: uma introdução ao openshift
Ricardo Martinelli de Oliveira
 
Node.js
luizhse
 
Testes com javascript
Laís Lima
 
Conhecendo mundo Node.js
Caio Ribeiro Pereira
 

Semelhante a Node js - Javascript Server Side (20)

PDF
Node.js e Express
Dan Vitoriano
 
PDF
Programação para Web II: NodeJS
Alex Camargo
 
PDF
Curso de Node JS Básico
Victor Hazin da Rocha
 
PDF
Minicurso Node.js fullstack IFCE - 2015-11-28
yuriploc
 
PDF
Node js - O poder do JavaScript do lado do servidor
Romulo Fagundes
 
PPTX
GDG Conf Node JS sem segredos
Caio Cutrim
 
PDF
Realtime com node.js e socket.io
Caio Ribeiro Pereira
 
PPTX
Node JS - Parte 2
Bruno Catão
 
PPTX
Introdução ao NodeJS - Utilizando o Nodejs
abiliocoelho2014
 
PDF
Precisamos falar sobre MERN stack
Sidney Roberto
 
PDF
Node.js no Pagar.me
Pedro Franceschi
 
PDF
Node.js: serious business
Pedro Franceschi
 
PDF
Introdução à MEAN Stack
Bruno Catão
 
ODP
GDG NodeJS Sem Segredos
Caio Cutrim
 
PPTX
Introdução à Node.js + MongoDB
Luiz Duarte
 
PDF
Node.js e a web do futuro
Alberto Souza
 
PDF
TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....
tdc-globalcode
 
PDF
Introdução ao Node.js
Edgar Eler
 
PPTX
Desenvolvimento web - conceitos, tecnologia e tendências.
Valmir Justo
 
ODP
Aula09 - Java Script
Jorge Ávila Miranda
 
Node.js e Express
Dan Vitoriano
 
Programação para Web II: NodeJS
Alex Camargo
 
Curso de Node JS Básico
Victor Hazin da Rocha
 
Minicurso Node.js fullstack IFCE - 2015-11-28
yuriploc
 
Node js - O poder do JavaScript do lado do servidor
Romulo Fagundes
 
GDG Conf Node JS sem segredos
Caio Cutrim
 
Realtime com node.js e socket.io
Caio Ribeiro Pereira
 
Node JS - Parte 2
Bruno Catão
 
Introdução ao NodeJS - Utilizando o Nodejs
abiliocoelho2014
 
Precisamos falar sobre MERN stack
Sidney Roberto
 
Node.js no Pagar.me
Pedro Franceschi
 
Node.js: serious business
Pedro Franceschi
 
Introdução à MEAN Stack
Bruno Catão
 
GDG NodeJS Sem Segredos
Caio Cutrim
 
Introdução à Node.js + MongoDB
Luiz Duarte
 
Node.js e a web do futuro
Alberto Souza
 
TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....
tdc-globalcode
 
Introdução ao Node.js
Edgar Eler
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Valmir Justo
 
Aula09 - Java Script
Jorge Ávila Miranda
 
Anúncio

Node js - Javascript Server Side

  • 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" });