Node.js, Uma breve introdução
-
Upload
pablo-feijo -
Category
Technology
-
view
582 -
download
2
description
Transcript of Node.js, Uma breve introdução
node.jsIntrodução
node.js?- Ryan Dahl- Criado em 2009- Escrito em C++ e Javascript - Multiplataforma (Linux, Windows e Mac)- Foco em alta escalabilidade e em tempo real- Versão atual: 0.10.26 / Fev 18, 2014- Open Source mantido pela Joyment
https://github.com/joyent/node
O que é?- Plataforma para utlizar Javascript fora do navegador. (Focada em servidores)
- Escrita sobre interpretador V8 do GoogleOu seja, essa plataforma é escrita com códigos C++ e Javascript
- Baseada em eventos
- I/O não bloqueante
Servidores “Comuns”
Servidores que usam Node.js
Quer dizer que...- Você tem o poder do Javascript para criar aplicações orientadas a eventos e assíncronas em qualquer máquina.
- Sua premissa é facilitar a construção de aplicações de rede (servidores web, etc.) sem bloqueio de leitura e escrita.
- Ao instalar o node, o mesmo já vem com uma biblioteca inicial muito poderosa. http://nodejs.org/api
- Comunidade de desenvolvedores extremamente entusiasmada.
What?var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
>> node hello.jsServer running at http://127.0.0.1:1337/'
Por que usar?- Aplicações com dados em tempo real- Aplicações com muitas, muitas requisições ao mesmo tempo- Aplicações com colaboração entre muitos usuários- Chats- Envios de dados (upload de arquivos)- Jogos- Servidor para diferentes protocolos ao mesmo tempo
- APIs (Sim, web apis, bitches)
Por que NÃO usar?
- Aplicações que utilizam muito processamento (redimensionamento de imagens, renderização de vídeos, cálculos matemáticos pesados, etc.)
- Simples páginas HTML
- Aplicações baseadas em conteúdo, CRUDs, com muitas regras de negócio
- Aplicações dependentes de bancos de dados relacionais
Empresas que utilizam
Mais em: http://nodejs.org/industry/ e: http://bit.ly/1kBolIL
Então, node.js é...- Plataforma para desenvolver aplicações com Javascript- Com foco em para alta escalabilidade para alta concorrência - Performance com altas cargas de acesso- Multiplataforma- Comunidade de desenvolvedores super ativa- Ainda imatura- Não soluciona todos os problemas do mundo
FimTchau, comercial
node.jsjs fora do seu navegador
The good stuff- Javascript- Fácil de instalar (hoje é)- Multiplataforma- V8- Pacotes, muitos pacotes- Event Loop - Conduz os desenvolvedores ao mindset de “Evented/Async I/O”
Event Loop- Single-Thread que escuta por todas requisições ao servidor
- Ao receber req. que precisam realizar operações bloqueantes (acesso a disco, computação pesada, etc), criar uma tarefa async para o SO e guarda um callback para esse tarefa
- Continua recebendo outras requições, até receber a resposta da tarefa enviado o SO, então executa o callback, espera até estar livre e executa esta respota
- Abstrai toda implementação de gerenciamento de threads, consumo de memória, etc
Multi-threaded HTTP server
Node.js Server
Multi-threaded concurrency Single threaded concurrency
Multi vs Single threaded concurrency
Synchronous I/O Asynchronous I/O
Sync vs Async I/O
Alguns problemas- É Javascript
Algumas bizarrices (www.wtfjs.com)Facilidade em não seguir padrõesNão é orientado a objetos
- Por default, exceções matam o processo- Vazamentos de memória difíceis de encontrar- Ainda é beta (~v 0.10.26)- Single thread trava em códigos de alto processamento- Falta de maturidade para utilizar bancos de dados relacionais
“I got 99 problems but a callback aint one”
Callback HELL
npm - node packeges manager- É o gerenciador de pacotes oficial do node.
- Nele já são mais de 61k pacotes escritos pela comunidade de desenvolvedores.
- Instalado junto ao node, que é uma dependência (óbvia) para o uso do npm.
- Utilizado através da linha de comando, possuí uma API poderosa para a instalação e busca de pacotes. https://www.npmjs.org/doc/
Utilizando o npm: Instalando pacote
Utilizando o npm: Baixando pacotesNa pasta root do projeto, criar o arquivo packages.json. {
'name': 'mini-chat' ,
version: '0.0.1',
description: 'Chat app.',
engines: {
'node': '>= 0.6.x',
npm: '>= 1.1.x'
},
dependencies: {
'express': '>= 2.x.x',
now: '>= 0.x.x'
},
}
Utilizando o npm
ExemplosSHOW ME THE CODE
https://github.com/ruanmyv/node-examples
Hello worldhello-app
Numbersnumbers-app
Chatchat-app
Expressexpress-app
Fim²
Show me the links!!http://nodebr.com/
http://howtonode.org/
http://nodejs.org/
https://github.com/joyent/node
http://www.nodebeginner.org/
http://callbackhell.com/
Why The Hell Would I Use Node.js? A Case-by-Case Introduction
Node Tools for VS - Youtube
Introducing node.js Tools for Visual Studio
Node.js para iniciantes
O que é npm do nodejs
O que exatamente é o Node.js?
What are the disadvantages of using Node.js?
Node.js for Beginners
Java EE threads v/s Node.js – which is better for concurrent data processing operations
Beginner’s Guide To Node.Js (Server-Side JavaScript)
Node.js para leigos
Slideshare - Node.js: serious business
Slideshare - Node.js campus party brasil 2011
Future-proofing Your Apps: Cloud Foundry and Node.js
7 minimal Node.js webframeworks
Concurrent programming for scalable web architetures
You’ll never believe how LinkedIn built its new iPad app (exclusive) [Linkedin]
Blazing fast node.js: 10 performance tips from LinkedIn Mobile [Linkedin]
Here's why you should be happy that Microsoft is embracing Node.js [Microsoft]
Yahoo! Announces Cocktails � Shaken, Not Stirred [Yahoo]
Why Walmart is using Node.js [Walmart]
Fluent 2013: Bill Scott, "Clash of the Titans: Releasing the Kraken | NodeJS @paypal" [Paypal]
Show me the links!!