SlideShare uma empresa Scribd logo
1 de 50
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

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
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o NodejsCaio Cutrim
 
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
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigitalJust Digital
 
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
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
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
 
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
 
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
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Emerson Macedo
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 

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
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
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?
 
Por que Node JS?
Por que Node JS?Por que Node JS?
Por que Node JS?
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
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
 
Javascript nos dias de hoje
Javascript nos dias de hojeJavascript nos dias de hoje
Javascript nos dias de hoje
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
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
 
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
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
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
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Conceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java NoroesteConceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java Noroeste
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
 
Estudo de caso - Uso Docker no Desenvolvimento
Estudo de caso - Uso Docker no DesenvolvimentoEstudo de caso - Uso Docker no Desenvolvimento
Estudo de caso - Uso Docker no Desenvolvimento
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 

Destaque

DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...iMasters
 
Desenvolvimento Front-end Orientado a Componentes
Desenvolvimento Front-end Orientado a ComponentesDesenvolvimento Front-end Orientado a Componentes
Desenvolvimento Front-end Orientado a ComponentesLucas Santos
 
Estudo - Estratégia Mobile Corporativa (Versão Full)
Estudo - Estratégia Mobile Corporativa (Versão Full)Estudo - Estratégia Mobile Corporativa (Versão Full)
Estudo - Estratégia Mobile Corporativa (Versão Full)Fabricio Freitas
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosCaio Cutrim
 
Conhecendo o Meteor
Conhecendo o MeteorConhecendo o Meteor
Conhecendo o MeteorCaio Cutrim
 
Nodejs Intro William Dias
Nodejs Intro William DiasNodejs Intro William Dias
Nodejs Intro William DiasWilliam Dias
 
Angular Nodejs e com mongolab
Angular Nodejs e com mongolabAngular Nodejs e com mongolab
Angular Nodejs e com mongolabWende Mendes
 
TDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSTDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSLeonardo Zanivan
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasRodrigo Branas
 
Query mechanisms for NoSQL databases
Query mechanisms for NoSQL databasesQuery mechanisms for NoSQL databases
Query mechanisms for NoSQL databasesArangoDB Database
 

Destaque (12)

DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
 
Desenvolvimento Front-end Orientado a Componentes
Desenvolvimento Front-end Orientado a ComponentesDesenvolvimento Front-end Orientado a Componentes
Desenvolvimento Front-end Orientado a Componentes
 
Estudo - Estratégia Mobile Corporativa (Versão Full)
Estudo - Estratégia Mobile Corporativa (Versão Full)Estudo - Estratégia Mobile Corporativa (Versão Full)
Estudo - Estratégia Mobile Corporativa (Versão Full)
 
Crawler com nodejs
Crawler com nodejsCrawler com nodejs
Crawler com nodejs
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem Segredos
 
Conhecendo o Meteor
Conhecendo o MeteorConhecendo o Meteor
Conhecendo o Meteor
 
Nodejs Intro William Dias
Nodejs Intro William DiasNodejs Intro William Dias
Nodejs Intro William Dias
 
Angular Nodejs e com mongolab
Angular Nodejs e com mongolabAngular Nodejs e com mongolab
Angular Nodejs e com mongolab
 
TDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSTDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJS
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
Query mechanisms for NoSQL databases
Query mechanisms for NoSQL databasesQuery mechanisms for NoSQL databases
Query mechanisms for NoSQL databases
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 

Semelhante a NodeJS - Tutorial de forma simples e pratica.

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
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edtedbrunoaalves
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxMarceloRosenbrock1
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
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
 
.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
 
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
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Javaarmeniocardoso
 
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
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com JavaTI Infnet
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
 

Semelhante a NodeJS - Tutorial de forma simples e pratica. (20)

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.
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
NoSQL + Node.js
NoSQL + Node.jsNoSQL + Node.js
NoSQL + Node.js
 
Introdução ao Nodejs
Introdução ao NodejsIntrodução ao Nodejs
Introdução ao Nodejs
 
Docker para devs .NET
Docker para devs .NETDocker para devs .NET
Docker para devs .NET
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
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
 
.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
 
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
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Java
 
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
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com Java
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01
 
Node.js
Node.jsNode.js
Node.js
 

NodeJS - Tutorial de forma simples e pratica.

  • 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  Servidores apache  Uma thread para cada conexão  Requisição de I/O Bloqueante (latência)
  • 4. 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.
  • 5. Soluções Possíveis  Escalar verticalmente;  Escalar horizontalmente;  Desenvolver em outra linguagem de programação mais rápida;
  • 7. Novos paradigmas  Chega de múltiplas threads, basta uma (single thread);  I/O Assíncronas;  Multiplexação.
  • 8. NodeJS  Plataforma de fácil desenvolvimento para aplicações de rede altamente escaláveis;  Desenvolvimento em Java script no lado do servidor;
  • 9. Arquitetura  Escrito em C/C++ e Javascript;  Baseado em Event Loop (epoll) utilizando libev;  Desenvolvido sobre a Javascript Engine V8(Google);
  • 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 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
  • 14. Criando um olá mundo Exemplo estático
  • 15.
  • 16.
  • 17.
  • 18. Conteúdo dinâmico Conteúdo dinâmico e manipulação javascript
  • 19.
  • 20.
  • 21.
  • 22. Gerenciador de pacotes Gerenciador de 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 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
  • 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
  • 26.
  • 27.
  • 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.
  • 29.
  • 31.
  • 32. 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.
  • 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
  • 36.
  • 37.
  • 38.
  • 39.
  • 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 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/
  • 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.js ser conhecido como servidor web, muitas de suas funcionalidades se expandem e deixam essa ferramenta ainda mais poderos do que já é.
  • 44. Gulp  Automatizar e melhorar 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 para criarar aplicativos moveis com tecnologias web HTML, CSS, Java Script.  http://phonegap.com  https://cordova.apache.org
  • 49. 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
  • 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