node js - javascript server side

15
Javascript Server Side

Upload: gustavo-correa-alves

Post on 24-Jun-2015

332 views

Category:

Technology


7 download

DESCRIPTION

Dicas para inicialização com Node js.

TRANSCRIPT

Page 1: Node js - Javascript Server Side

Javascript Server Side

Page 2: Node js - 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

Page 3: Node js - Javascript Server Side

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 e Tomcat.

!! Aconselhável Não aconselhável

- API RESTful - Aplicação Real Time (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.

Page 4: Node js - Javascript Server Side

NODEJSSingle-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.

Page 5: Node js - Javascript Server Side

NODEJSEvent-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.

Page 6: Node js - Javascript Server Side

INSTALAÇÃO E CONFIGURAÇÃOWindows

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

Page 7: Node js - Javascript Server Side

O BÁSICOIniciando 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. !

Page 8: Node js - Javascript Server Side

O BÁSICOServidor 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); !!!

Page 9: Node js - Javascript Server Side

O BÁSICOAssí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 !!!

Page 10: Node js - Javascript Server Side

O BÁSICOMó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));

Page 11: Node js - Javascript Server Side

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.

Page 12: Node js - Javascript Server Side

API RESTful para Geração de Logs

Page 13: Node js - Javascript Server Side

MONGODBIntroduçã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/ .

!

Page 14: Node js - Javascript Server Side

NODEJS EM PRODUÇÃOServiç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" });

Page 15: Node js - Javascript Server Side

OBRIGADO!

Palestrante

Gustavo Corrêa Alves

http://www.gustavocalves.com.br

https://github.com/gcajpa

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

!!