Filipe Morelli
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).
Servidores normalmente
 Servidores apache
 Uma thread para cada conexão
 Requisição de I/O Bloqueante (latência)
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.
Soluções Possíveis
 Escalar verticalmente;
 Escalar horizontalmente;
 Desenvolver em outra linguagem de programação mais rápida;
Por que NodeJS?
Novos paradigmas
 Chega de múltiplas threads, basta uma (single thread);
 I/O Assíncronas;
 Multiplexação.
NodeJS
 Plataforma de fácil desenvolvimento para aplicações de rede altamente
escaláveis;
 Desenvolvimento em Java script no lado do servidor;
Arquitetura
 Escrito em C/C++ e Javascript;
 Baseado em Event Loop (epoll) utilizando libev;
 Desenvolvido sobre a Javascript Engine V8(Google);
Mãos na massa!
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/
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
Imagem descritiva
Criando um olá mundo
Exemplo estático
Conteúdo dinâmico
Conteúdo dinâmico e manipulação javascript
Gerenciador de pacotes
Gerenciador de pacotes contem diversas bibliotecas prontas ou em
desenvolvimento para desenvolvedores utilizarem.
Ganhos
 Muitas bibliotecas
 Agilidade no desenvolvimento
 Evita a redundância
 Praticidade com frameworks
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
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
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.
Objetos Globais
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.
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 de
nomes;
 Domain:
• Proporciona uma maneira de lidar com multiplos e diferentes requisições
I/O como um unico grupo de operaçoes
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
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
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/
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/
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
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á é.
Gulp
 Automatizar e melhorar o seu fluxo de trabalho.
 http://gulpjs.com
Coffee Script
 CoffeeScript é um pouco linguagem que compila em JavaScript. JavaScript
sempre teve um coração lindo. CoffeeScript é uma tentativa de expor as partes
boas 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
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
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
Cordova/Phonegap
 Plataforma para criarar aplicativos moveis com tecnologias web HTML, CSS,
Java Script.
 http://phonegap.com
 https://cordova.apache.org
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
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

NodeJS - Tutorial de forma simples e pratica.

  • 1.
  • 2.
    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).
  • 3.
    Servidores normalmente  Servidoresapache  Uma thread para cada conexão  Requisição de I/O Bloqueante (latência)
  • 4.
    Servidores normalmente  Umathread usando 2mb de RAM  Uma thread usando 2mb de RAM- 2MB x 3.000 conexões silmutâneas = 6GB Isso é um grande problema.
  • 5.
    Soluções Possíveis  Escalarverticalmente;  Escalar horizontalmente;  Desenvolver em outra linguagem de programação mais rápida;
  • 6.
  • 7.
    Novos paradigmas  Chegade múltiplas threads, basta uma (single thread);  I/O Assíncronas;  Multiplexação.
  • 8.
    NodeJS  Plataforma defácil desenvolvimento para aplicações de rede altamente escaláveis;  Desenvolvimento em Java script no lado do servidor;
  • 9.
    Arquitetura  Escrito emC/C++ e Javascript;  Baseado em Event Loop (epoll) utilizando libev;  Desenvolvido sobre a Javascript Engine V8(Google);
  • 10.
  • 11.
    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/
  • 12.
    Primeiro teste emNodeJS  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
  • 13.
  • 14.
    Criando um olámundo Exemplo estático
  • 18.
    Conteúdo dinâmico Conteúdo dinâmicoe manipulação javascript
  • 22.
    Gerenciador de pacotes Gerenciadorde pacotes contem diversas bibliotecas prontas ou em desenvolvimento para desenvolvedores utilizarem.
  • 23.
    Ganhos  Muitas bibliotecas Agilidade no desenvolvimento  Evita a redundância  Praticidade com frameworks
  • 24.
    Perdas  Falta decontrole 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
  • 25.
    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
  • 28.
    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.
  • 30.
  • 32.
    Módulos Em Node existemmuitos modulos disponiveis para auxiliar no desenvolvimento. Além claro dos que possam ser desenvolvidos por outros programadores e usando o NPM.
  • 33.
    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 de nomes;  Domain: • Proporciona uma maneira de lidar com multiplos e diferentes requisições I/O como um unico grupo de operaçoes
  • 34.
    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
  • 35.
    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
  • 40.
    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/
  • 41.
    Socket.IO  Socket.IO permitecomunicaçã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/
  • 42.
    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
  • 43.
    Curiosidades Apesar de Node.jsser conhecido como servidor web, muitas de suas funcionalidades se expandem e deixam essa ferramenta ainda mais poderos do que já é.
  • 44.
    Gulp  Automatizar emelhorar o seu fluxo de trabalho.  http://gulpjs.com
  • 45.
    Coffee Script  CoffeeScripté um pouco linguagem que compila em JavaScript. JavaScript sempre teve um coração lindo. CoffeeScript é uma tentativa de expor as partes boas 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
  • 46.
    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
  • 47.
    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
  • 48.
    Cordova/Phonegap  Plataforma paracriarar aplicativos moveis com tecnologias web HTML, CSS, Java Script.  http://phonegap.com  https://cordova.apache.org
  • 49.
    Electron  Criar aplicativosdesktops atraves de tecnologias web HTML, CSS, Java Script, Além de possuir como server side Node.JS  http://electron.atom.io
  • 50.
    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