Node.js, Uma breve introdução
Upcoming SlideShare
Loading in...5
×
 

Node.js, Uma breve introdução

on

  • 520 views

Uma breve introdução a plataforma Node.js.

Uma breve introdução a plataforma Node.js.

Statistics

Views

Total Views
520
Views on SlideShare
520
Embed Views
0

Actions

Likes
2
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Node.js, Uma breve introdução Node.js, Uma breve introdução Presentation Transcript

  • node.js Introduçã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 Google Ou seja, essa plataforma é escrita com códigos C++ e Javascript - Baseada em eventos - I/O não bloqueante View slide
  • Servidores “Comuns” View slide
  • 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 Worldn'); }).listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/'); >> node hello.js Server 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
  • Fim Tchau, comercial
  • node.js js 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 vs Single threaded concurrency Multi-threaded concurrency Single threaded concurrency
  • Sync vs Async I/O Synchronous I/O Asynchronous I/O
  • Alguns problemas - É Javascript Algumas bizarrices (www.wtfjs.com) Facilidade em não seguir padrões Nã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 pacotes Na 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
  • Exemplos SHOW ME THE CODE https://github.com/ruanmyv/node-examples
  • Hello world hello-app
  • Numbers numbers-app
  • Chat chat-app
  • Express express-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
  • Show me the links!! 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]