NodeJS - Tutorial de forma simples e pratica.

50
Filipe Morelli

Transcript of NodeJS - Tutorial de forma simples e pratica.

Page 1: NodeJS - Tutorial de forma simples e pratica.

Filipe Morelli

Page 2: NodeJS - Tutorial de forma simples e pratica.

O que é NodeJS?

É um interpretador de código JavaScript que funciona do lado do servidor.

Seu objetivo é ajudar programadores na criação de aplicações de alta

escalabilidade (como um servidor web), com códigos capazes de manipular

dezenas de milhares de conexões simultâneas, numa única máquina física.

O Node.js é baseado no interpretador V8 JavaScript Engine (interpretador de

JavaScript open source implementado pelo Google em C++ e utilizado pelo

Chrome).

Page 3: NodeJS - Tutorial de forma simples e pratica.

Servidores normalmente

Servidores apache

Uma thread para cada conexão

Requisição de I/O Bloqueante (latência)

Page 4: NodeJS - Tutorial de forma simples e pratica.

Servidores normalmente

Uma thread usando 2mb de RAM

Uma thread usando 2mb de RAM- 2MB x 3.000 conexões silmutâneas = 6GB

Isso é um grande problema.

Page 5: NodeJS - Tutorial de forma simples e pratica.

Soluções Possíveis

Escalar verticalmente;

Escalar horizontalmente;

Desenvolver em outra linguagem de programação mais rápida;

Page 6: NodeJS - Tutorial de forma simples e pratica.

Por que NodeJS?

Page 7: NodeJS - Tutorial de forma simples e pratica.

Novos paradigmas

Chega de múltiplas threads, basta uma (single thread);

I/O Assíncronas;

Multiplexação.

Page 8: NodeJS - Tutorial de forma simples e pratica.

NodeJS

Plataforma de fácil desenvolvimento para aplicações de rede altamente

escaláveis;

Desenvolvimento em Java script no lado do servidor;

Page 9: NodeJS - Tutorial de forma simples e pratica.

Arquitetura

Escrito em C/C++ e Javascript;

Baseado em Event Loop (epoll) utilizando libev;

Desenvolvido sobre a Javascript Engine V8(Google);

Page 10: NodeJS - Tutorial de forma simples e pratica.

Mãos na massa!

Page 11: NodeJS - Tutorial de forma simples e pratica.

Instalar NodeJS

Windows:

• Baixar o arquivo nodejs msi e para instalar next, next....

Linux derivados do debian:

• sudo apt-get install node

Linux derivados do Red Hat:

• yum install node or rpm install node

Outros:

• Para mais informações https://nodejs.org/en/

Page 12: NodeJS - Tutorial de forma simples e pratica.

Primeiro teste em NodeJS

Depois de instalado digite no prompt de comando o seuiqnte comando:

node ou nodejs -> enter

• 1 + 1 -> enter

• 2 resutado

• var x = 15 -> enter

• var y = 10 -> enter

• x + y -> enter

• 25 -> resultado

• ctrl + c x2 -> para sair do node

Page 13: NodeJS - Tutorial de forma simples e pratica.

Imagem descritiva

Page 14: NodeJS - Tutorial de forma simples e pratica.

Criando um olá mundoExemplo estático

Page 15: NodeJS - Tutorial de forma simples e pratica.
Page 16: NodeJS - Tutorial de forma simples e pratica.
Page 17: NodeJS - Tutorial de forma simples e pratica.
Page 18: NodeJS - Tutorial de forma simples e pratica.

Conteúdo dinâmicoConteúdo dinâmico e manipulação javascript

Page 19: NodeJS - Tutorial de forma simples e pratica.
Page 20: NodeJS - Tutorial de forma simples e pratica.
Page 21: NodeJS - Tutorial de forma simples e pratica.
Page 22: NodeJS - Tutorial de forma simples e pratica.

Gerenciador de pacotes

Gerenciador de pacotes contem diversas bibliotecas prontas ou em

desenvolvimento para desenvolvedores utilizarem.

Page 23: NodeJS - Tutorial de forma simples e pratica.

Ganhos

Muitas bibliotecas

Agilidade no desenvolvimento

Evita a redundância

Praticidade com frameworks

Page 24: NodeJS - Tutorial de forma simples e pratica.

Perdas

Falta de controle da aplicação apesar de serem de código fonte

Muitas bibliotecas para fazer a mesma coisa

Aprender muitas bibliotecas e framework para auxiliar no trabalho

Page 25: NodeJS - Tutorial de forma simples e pratica.

Chamada de retorno

Callback é um assíncrono equivalente a função de retorno. Função callback é

chamada para completar uma tarefa passada.

Por exemplo:

• Você pode ler um arquivo de forma asincrona

• Mandar uma requisição e depois executar a ação

• Geralmente ações que não necessitem de mandar um retorno

imediatamente

Page 26: NodeJS - Tutorial de forma simples e pratica.
Page 27: NodeJS - Tutorial de forma simples e pratica.
Page 28: NodeJS - Tutorial de forma simples e pratica.

Emissão de Eventos

Node é de única aplicação thread, porém ele suporta concorrencia via

concentimento de eventos e callbacks. Como toda API de Nodejs são

assíncronas e comecao e somente uma thread, ele usa funções assíncronas para

manter a concorrencia.

Node utiliza o padrão observador. Ele mantém thread em um ciclo de eventos e

sempre que qualquer tarefa ficar concluída, ele aciona o evento correspondente

que assimila a função de event listener para obter executado.

Page 29: NodeJS - Tutorial de forma simples e pratica.
Page 30: NodeJS - Tutorial de forma simples e pratica.

Objetos Globais

Page 31: NodeJS - Tutorial de forma simples e pratica.
Page 32: NodeJS - Tutorial de forma simples e pratica.

Módulos

Em Node existem muitos modulos disponiveis para auxiliar no desenvolvimento.

Além claro dos que possam ser desenvolvidos por outros programadores e usando

o NPM.

Page 33: NodeJS - Tutorial de forma simples e pratica.

Outros módulos úteis

OS:

• Proporciona uma basica biblioteca de operações com Sistema Operacional(Independente de qual seja ele).

Path:

• Proporciona utilitarios para manipulação de diretorios e caminhos;

Net:

• Proporciona tanto no servidor quanto no cliente como uma elo.

DNS:

• Proporciona funções para fazer o atual DNS lookup como resolvedor denomes;

Domain:

• Proporciona uma maneira de lidar com multiplos e diferentes requisiçõesI/O como um unico grupo de operaçoes

Page 34: NodeJS - Tutorial de forma simples e pratica.

Framework Desenvolvimento

Total.js

Total.js é um Framework no lado do servidor para criação de um rico web site,

aplicações web e REST servicos. O framework não contem qualquer aplicações e

dependencias de terceiros.

• "We made this great framework for you to help you growing your business"

• https://www.totaljs.com

Page 35: NodeJS - Tutorial de forma simples e pratica.

Framework Desenvolvimento

Express

Express é um framework de aplicações web mínimos e flexíveis Node.js. Express

fornece um conjunto de robustos recursos para web e aplicações móveis.

• http://expressjs.com

Instalar

• npm install express --save

Page 36: NodeJS - Tutorial de forma simples e pratica.
Page 37: NodeJS - Tutorial de forma simples e pratica.
Page 38: NodeJS - Tutorial de forma simples e pratica.
Page 39: NodeJS - Tutorial de forma simples e pratica.
Page 40: NodeJS - Tutorial de forma simples e pratica.

Meteor

Meteor é um framework open-source (MVC) para a construção de sites e

aplicações móveis da web. Ele permite escrever ambas as partes de cliente e

servidor de um aplicativo em JavaScript. conjunto de módulos pré-escrita,

auto-suficientes do Meteor embutido torna a escrita de códigos de aplicação.

Seu modelo de programação reativa permite a criação de aplicações que

utilizam menor código JavaScript. Além disso, Meteor é uma poderosa

estrutura para a construção de aplicações em tempo real.

https://www.meteor.com/

Page 41: NodeJS - Tutorial de forma simples e pratica.

Socket.IO

Socket.IO permite comunicação em tempo real com base em eventos

bidirecional.

Ele funciona em todas as plataformas, navegadores ou dispositivo,

concentrando-se igualmente sobre a confiabilidade e velocidade.

http://socket.io/

Exemplo

• http://socket.io/demos/chat/

• http://socket.io/demos/weplay/

Page 42: NodeJS - Tutorial de forma simples e pratica.

Total.js

Total.js é um Framework no lado do servidor para criação de um rico web site,

aplicações web e REST servicos. O framework não contem qualquer

aplicações e dependencias de terceiros.

"We made this great framework for you to help you growing your business“

https://www.totaljs.com

Page 43: NodeJS - Tutorial de forma simples e pratica.

Curiosidades

Apesar de Node.js ser conhecido como servidor web, muitas de suas

funcionalidades se expandem e deixam essa ferramenta ainda mais poderos do que

já é.

Page 44: NodeJS - Tutorial de forma simples e pratica.

Gulp

Automatizar e melhorar o seu fluxo de trabalho.

http://gulpjs.com

Page 45: NodeJS - Tutorial de forma simples e pratica.

Coffee Script

CoffeeScript é um pouco linguagem que compila em JavaScript. JavaScriptsempre teve um coração lindo. CoffeeScript é uma tentativa de expor as partesboas do JavaScript de forma simples.

Implementa conceitos como forçar a identação de codigo.

Menos é mais.

Orrientação a Objetos de maneira mais clara.

http://coffeescript.org

Page 46: NodeJS - Tutorial de forma simples e pratica.

TypeScript

Typescript é um super digitado de JavaScript , que compila para JavaScript

simples. Qualquer browser. Qualquer host. Qualquer sistema operacional .

Código aberto.

Foco trazer programadores de linguagens fortemente tipadas para o mundo

Java Script.

Orientação a Objetos de forma explicita.

https://www.typescriptlang.org

Page 47: NodeJS - Tutorial de forma simples e pratica.

Less

LESS é uma linguagem de folha de estilos dinâmica desenhada por Alexis

Sellier. Ela foi influenciada por Sass e influenciou a nova sintaxe "SCSS" do

Sass, que adaptou sua sintaxe de formação de blocos do tipo CSS.

Programação no mundo do CSS.

Redução de codigo CSS.

http://lesscss.org

Page 48: NodeJS - Tutorial de forma simples e pratica.

Cordova/Phonegap

Plataforma para criarar aplicativos moveis com tecnologias web HTML, CSS,

Java Script.

http://phonegap.com

https://cordova.apache.org

Page 49: NodeJS - Tutorial de forma simples e pratica.

Electron

Criar aplicativos desktops atraves de tecnologias web HTML, CSS, Java

Script, Além de possuir como server side Node.JS

http://electron.atom.io

Page 50: NodeJS - Tutorial de forma simples e pratica.

Referências Bibliográficas

• Node.js. Disponível em: <http://nodejs.org/> Acesso em 3 de Outubro de 2016.

• Brincando com Node.js. Disponível em: http://akitaonrails.com/2010/03/16/brincando-

com-node-js-tornado-and-thin Acesso em 3 de Outubro de 2016.

• Event loop. Disponível em: <http://en.wikipedia.org/wiki/Event_loop> Acesso em 3 de

Outubro de 2016.

• CROWTHER, ROB. et al. Html5 em ação. São Paulo: NOVATEC, 2014