Upload
filipe-morelli
View
92
Download
5
Embed Size (px)
Citation preview
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á mundoExemplo estático
Conteúdo dinâmicoConteú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 denomes;
Domain:
• Proporciona uma maneira de lidar com multiplos e diferentes requisiçõesI/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. 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
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