Com Node.js, JavaScript liberta-se do navegador e torna-se uma linguagem dinâmica de uso geral assim como Python e Ruby. Node.js usa o mesmo motor V8 de alto desempenho do Google Chrome, roda em Linux, Windows e Mac OSX, e oferece APIs assíncronas para criar servidores e clientes que lidam com muitas requisições concorrentes de modo eficiente.
Saiba o que é programação assíncrona e tenha uma visão panorâmica do Node.js.
1. Luciano Ramalho
luciano@ramalho.org
@luciano
Node.js:
JavaScript com Google V8 no servidor
2. Luciano Ramalho
• Programando por prazer desde 1978,
profissionalmente desde 1982
• Arquiteto de soluções Web desde 1994
• 1º diretor técnico do Brasil Online, na Abril S/A
• Muitos clientes e alguns empregos desde então,
quase sempre atuando na Web (server-side)
• Agora: Oficinas Turing e Academia Python na
Globalcode
@luciano
5. Node.js...
• É um ambiente de execução para usar JavaScript
fora do navegador
• linha de comando + console interativo
• Incorpora o engine de JavaScript Google V8
• aquele do Google Chrome, ECMAScript 5
• Inclui bibliotecas para fazer programação de I/O
orientada a eventos (modo assíncrono)
@luciano
26. hora.js Com isso o shell do *nix
consegue executar o script
O 2º console.log
acontece antes do primeiro
* http://github.com/oturing/nodejs
@luciano
28. hora3.js
Cada
chamada
dispara a
próxima,
com
atraso
aleatório
Iniciar * http://github.com/oturing/nodejs
29. statSync.js
Importação de módulos
≈ Common.js
Invoca a função
statSync do módulo fs.
Saída padrão: stdout
* http://github.com/oturing/nodejs
@luciano
30. stat.js: chamada assíncrona
Callback:
esta função
é invocada
quando o
SO responde
o stat, milhões
de ciclos depois
* http://github.com/oturing/nodejs
@luciano
31. sigint.js
Callback: invocada quando o operador tecla ˆC
* http://github.com/oturing/nodejs
@luciano
32. sigint2.js
O primeiro
callback associa
um segundo
callback ao
mesmo evento
* http://github.com/oturing/nodejs
@luciano
44. Acessar a rede é...
...como ir buscar um papel no Japão
@luciano
45. Tempos de acesso
ciclos de CPU
Dados
cache L1 3
aproximados
cache L2 14 citados por
RAM 250 Ryan Dahl*
disco 41.000.00
rede 240.000.000
* http://www.youtube.com/watch?v=M-sc73Y-zQA
@luciano
51. Evitando “o pior do JS”
• “use strict” sempre, sem medo de ser feliz
• CoffeScript, Clojure etc.
• no server-side, ninguém liga se você usar outra
linguagem, desde que ela gere código JavaScript
• ECMAScript 5
• no server-side o ambiente é controlado: o
único engine que te interessa é o V8
@luciano
52. Luciano Ramalho
luciano@ramalho.org
@luciano
oficina online:
JavaScript moderno
com Node.js e testes automatizados
* http://pre-node.turing.com.br