Este documento resume um workshop sobre Node.js que abrange tópicos desde a história e conceitos básicos até a criação de aplicações e deploy. O workshop inclui exemplos práticos de código e discute tópicos como JavaScript, o core do Node.js, frameworks como Express e Kraken, web sockets, e opções de deploy em nuvem ou on-premise. O objetivo é que os participantes saiam com todas as suas dúvidas sanadas.
2. Exemplos do workshop
Este workshop acompanha alguns exemplos práticos,
publicados em:
https://github.com/nbluis/workshop-nodejs
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
8. JavaScript
JavaScript para browsers - Funciona no IE 6 ?
● jQuery
● Prototype
● Dojo
● MooTools
● Até os dias de hoje (Ember, Angular, React, Backbone)
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. C10k problem
E se o site tiver 10mil usuários simultâneos ?
http://www.kegel.com/c10k.html
● Threads
● IO Síncrono
11. C10k problem
Tempo de acesso a informação
● Cache - 0.5ns
● Memória principal - 100ns
● Disco - 10.000.000ns
33. Podem ser variáveis
var myFunction = function() {
console.log('Hello World!');
}
myFunction();
34. Podem ser parâmetros
function execute(callback) {
callback();
}
execute(function() {
console.log('Hello World!');
});
35. Podem retornar outras funções
function build() {
return function() {
console.log('Hello World!');
};
}
build()(); // WTF ?
36. E tudo isso junto também LOL
function execute(callback) { callback(); }
function build() {
return function() { console.log('Hello World!'); };
}
(function() {
execute(build());
})();
38. Podem ter métodos
function Animal() {
this.comer = function() {
console.log('Estou Comendo!');
};
}
new Animal().comer();
39. Podem ter atributos
function Animal() {
var comeu = false;
this.comer = function() {
comeu = true;
};
}
new Animal().comer();
40. As vezes até “herança”
function Animal() {
this.comer = function() {console.log('Comi!');}
}
function Cachorro() {
Animal.apply(this);
}
new Cachorro().comer();
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. Podem ter + ou - parâmetros
function escreveNome(nome, sobrenome) {
console.log(nome, sobrenome);
}
escreveNome('João');
escreveNome('João', 'Silva');
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');
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. 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. Path
Utilitário para resolução de caminhos de
diretórios e arquivos
Caminho absoluto, caminho relativo, etc.
Exemplos 07-path-sample
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. Iniciando um projeto express
Para este workshop vamos focar no express,
afim de entender a base de tudo.
63. Iniciando um projeto
Hora de botar tudo em prática!
● npm init
● dependências
● npm install
● Lets code….