O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Node.JS - Workshop do básico ao avançado

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Uma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
Carregando em…3
×

Confira estes a seguir

1 de 76 Anúncio

Node.JS - Workshop do básico ao avançado

Baixar para ler offline

Node.JS - Workshop do básico ao avançado

Workshop que realizo sobre Node.JS in-company.
Exemplos deste workshop estão disponíveis no seguinte endereço.
https://github.com/nbluis/workshop-nodejs

Node.JS - Workshop do básico ao avançado

Workshop que realizo sobre Node.JS in-company.
Exemplos deste workshop estão disponíveis no seguinte endereço.
https://github.com/nbluis/workshop-nodejs

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Node.JS - Workshop do básico ao avançado (20)

Anúncio

Mais recentes (20)

Anúncio

Node.JS - Workshop do básico ao avançado

  1. 1. Workshop do básico ao avançado Eduardo Bohrer @nbluis
  2. 2. Exemplos do workshop Este workshop acompanha alguns exemplos práticos, publicados em: https://github.com/nbluis/workshop-nodejs
  3. 3. Temática ● As vezes eu falo demais, me interrompam ! ● As vezes eu esqueço das coisas, perguntem ! ● Eu sou gentil, não fique com vergonha ! ● O maior objetivo é sair sem dúvidas ● A discussão é o melhor aprendizado ● Quanto mais codificarmos melhor
  4. 4. Conteúdo ● História ● Conhecendo Node.js ● Conhecendo JavaScript ● Node.js Core ● Criando Apps ● Online Apps ● Fazendo deploy
  5. 5. Conteúdo ● História ● Conhecendo Node.js ● Conhecendo Javascript ● Node.js Core ● Criando Apps ● Online Apps ● Fazendo deploy
  6. 6. Os 3 pilares do Node.js ● JavaScript ● V8 Engine ● IO Assíncrono
  7. 7. JavaScript ● 1995 ● 10 dias ● ECMA ● Microsoft ● JavaScript vs Java Brendan Eich
  8. 8. JavaScript JavaScript para browsers - Funciona no IE 6 ? ● jQuery ● Prototype ● Dojo ● MooTools ● Até os dias de hoje (Ember, Angular, React, Backbone)
  9. 9. V8 Engine Google Chrome / Chromium (Open-Source) https://code.google.com/p/v8/ Compila o código Javascript para o formato nativo de máquina, permitindo que rode a velocidade de um código binário compilado.
  10. 10. C10k problem E se o site tiver 10mil usuários simultâneos ? http://www.kegel.com/c10k.html ● Threads ● IO Síncrono
  11. 11. C10k problem Tempo de acesso a informação ● Cache - 0.5ns ● Memória principal - 100ns ● Disco - 10.000.000ns
  12. 12. C10k problem ● select ● epool ● kqueue ● libevent IO Assíncrono
  13. 13. Node.js Mas o que tudo isso tem a ver com Node.js ?
  14. 14. Habemus Node.js Node.js = JavaScript + V8 + IO Assincrono
  15. 15. Node.js 2009 ● Linguagem (JavaScript) ● Interpretador (V8) ● Um modelo (IO Assíncrono) ● API Base ● Interface de IO Ryan Dahl
  16. 16. Node.js hoje Versão 0.12.0 Joyent Core Team IO.js + Open Governance
  17. 17. Pausa para o café Perguntas ?
  18. 18. Conteúdo ● História ● Conhecendo Node.js ● Conhecendo JavaScript ● Node.js Core ● Criando Apps ● Online Apps ● Fazendo deploy
  19. 19. Instalação Read the docs ! apt-get install nodejs yum install nodejs https://nodejs.org/download/
  20. 20. REPL - Read Eval Print Loop $ node -v v0.12.0 $ node > console.log(‘Hello World!’);
  21. 21. Rodando Scripts $ echo "console.log('Hello World')" >> index.js $ node index.js Hello World!
  22. 22. Exemplos mais legais ● Servidor http simples ● Calculadora no console
  23. 23. Modularização require ● Builtin / API ● Internal ● Third-party
  24. 24. Modularização Criando um módulo module.exports Ver modules-sample
  25. 25. Node.js API https://nodejs.org/api/ Detalharemos isso mais tarde
  26. 26. NPM.js Node package manager http://npmjs.org ● npm command line ● Global vs Local ● package.json
  27. 27. Package.json ● Informações básicas ● Colaboradores ● Dependências ● Licenças ● Tasks
  28. 28. Pausa para o café Perguntas ?
  29. 29. Conteúdo ● História ● Conhecendo Node.js ● Conhecendo JavaScript ● Node.js Core ● Criando Apps ● Online Apps ● Fazendo deploy
  30. 30. JavaScript ● Tipagem dinâmica ● Orientada a objetos SIM ● Com modelo de protótipos ● Pitadas de linguagem funcional
  31. 31. Funções são tudo function hello() { console.log('Hello World!'); } hello();
  32. 32. Podem ser auto-contidas (function() { console.log('Hello World!'); })();
  33. 33. Podem ser variáveis var myFunction = function() { console.log('Hello World!'); } myFunction();
  34. 34. Podem ser parâmetros function execute(callback) { callback(); } execute(function() { console.log('Hello World!'); });
  35. 35. Podem retornar outras funções function build() { return function() { console.log('Hello World!'); }; } build()(); // WTF ?
  36. 36. E tudo isso junto também LOL function execute(callback) { callback(); } function build() { return function() { console.log('Hello World!'); }; } (function() { execute(build()); })();
  37. 37. Podem ser instanciadas function Animal() {} new Animal();
  38. 38. Podem ter métodos function Animal() { this.comer = function() { console.log('Estou Comendo!'); }; } new Animal().comer();
  39. 39. Podem ter atributos function Animal() { var comeu = false; this.comer = function() { comeu = true; }; } new Animal().comer();
  40. 40. As vezes até “herança” function Animal() { this.comer = function() {console.log('Comi!');} } function Cachorro() { Animal.apply(this); } new Cachorro().comer();
  41. 41. Sobrescrita de métodos também function Animal() { this.comer = function() {console.log('Comi!');} } function Cachorro() { Animal.apply(this); this.comer = function() {console.log('O cachorro comeu');} } new Cachorro().comer();
  42. 42. Podem ter + ou - parâmetros function escreveNome(nome, sobrenome) { console.log(nome, sobrenome); } escreveNome('João'); escreveNome('João', 'Silva');
  43. 43. Ou ter parâmetros sem ter (Troll) function escreve() { console.log(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); }; escreve('JavaScript', 'é', 'coisa', 'do', 'demo');
  44. 44. Conhecendo mais http://jstherightway.org/
  45. 45. Pausa para o café Perguntas ?
  46. 46. Conteúdo ● História ● Conhecendo Node.js ● Conhecendo JavaScript ● Node.js Core ● Criando Apps ● Online Apps ● Fazendo deploy
  47. 47. Core API https://nodejs.org/api/
  48. 48. Passada rápida ● EventEmitter ● Process ● Path e FileSystem ● HTTP ● Buffers e Streams
  49. 49. Event Emitter Emissor de eventos por toda a plataforma. Muito utilizado pela Core API e Módulos externos.
  50. 50. Escutando eventos var events = require('events'), eventEmitter = new events.EventEmitter(); eventEmitter.on('meuevento', function() { console.log('Meu evento aconteceu!'); });
  51. 51. Emitindo eventos var events = require('events'), eventEmitter = new events.EventEmitter(); eventEmitter.emit('meuevento');
  52. 52. Criando emissores de evento Ver exemplo 03-customemitter.js
  53. 53. Node.js e eventos ● Porque eventos estão em todos os lugares ? ● Event Loop / Assíncrono ● Por isso que Javascript + Node.js são legais ● Veremos que toda a API do Node.js é assim
  54. 54. Process Informações básicas sobre o processo e SO STDIN e STDOUT Módulo global, não necessita require Ver Exemplos 06-process-sample
  55. 55. Path Utilitário para resolução de caminhos de diretórios e arquivos Caminho absoluto, caminho relativo, etc. Exemplos 07-path-sample
  56. 56. File System Manipulação de arquivos Ver exemplos 08-filesystem-samples Async - Sync - Streams
  57. 57. HTTP HTTP server e client Ver exemplos 09 - http-samples
  58. 58. Muitas outras https://nodejs.org/api/ Cluster, Cripto, Console, Debugger, DNS, Net, Https, OS, Timers, TLS/SSL, UDP, URL, ZLIB ...
  59. 59. Pausa para o café Perguntas ?
  60. 60. Conteúdo ● História ● Conhecendo Node.js ● Conhecendo JavaScript ● Node.js Core ● Criando Apps ● Online Apps ● Fazendo deploy
  61. 61. Express e Kraken Express - framework web mais utilizado. http://expressjs.com/ Kraken - Framework web criado pelo LinkedIn que junta express com outros frameworks para criar um framework full-stack. http://krakenjs.com/
  62. 62. Iniciando um projeto express Para este workshop vamos focar no express, afim de entender a base de tudo.
  63. 63. Iniciando um projeto Hora de botar tudo em prática! ● npm init ● dependências ● npm install ● Lets code….
  64. 64. Definindo rotas app.get(‘/’, function(req,res) {}); app.post(‘/add’, function(req,res) {}); app.put(‘/update’, function(req,res) {});
  65. 65. Renderizando views ● Template engine ● Renderizando ● Parâmetros ● Conteúdo estático
  66. 66. Acessando banco de dados ● Driver ● Connection ● Query ● Result ● Parâmetros
  67. 67. Modularizando código Exemplos ● Controllers ● Models ● Helpers
  68. 68. Conteúdo ● História ● Conhecendo Node.js ● Conhecendo JavaScript ● Node.js Core ● Criando Apps ● Online Apps ● Fazendo deploy
  69. 69. Web sockets Spec HTML 5 Quantos canais abertos um servidor suporta ? Event Loop + Async IO
  70. 70. Web sockets e Socket.IO http://socket.io Protocolo Cliente Fallback
  71. 71. Socket.IO APP Ver Exemplo 11 - socket.io.sample
  72. 72. Conteúdo ● História ● Conhecendo Node.js ● Conhecendo JavaScript ● Node.js Core ● Criando Apps ● Online Apps ● Fazendo deploy
  73. 73. Deploy em nuvem
  74. 74. Deploy onsite ● Simples ● Preferencialmente Linux ● Instalação básica (gerenciador de pacotes) ● Deploy ● Exposto ou via proxy (NGINX / Apache)
  75. 75. Pausa para o café Perguntas ?
  76. 76. Workshop do básico ao avançado Eduardo Bohrer @nbluis https://github.com/nbluis/workshop-nodejs

×