réu technodejs
TRANSCRIPT
Prsentation de Node.JS
Runion Technique @CleverAge
17/06/2011
Code des dmonstrations: https://github.com/naholyr/demo-reunion-technique-nodejs
Le me introduce
Web: Javascript ct serveur
Performant: Moteur V8 de Chrome + API asynchrone
Open-Source: https://github.com/joyent/node
En prod: tempalias (http://301.tl/2v), transloadit
(http://301.tl/2u), yammer (http://301.tl/2s), 301TL
(http://301.tl)
Et d'autres tous les jours \o/ (http://301.tl/2t)
Ryah Dahl @ryah http://nodejs.org
JS ct serveur
Pas une ide rcente...
SSJS Netscape 1996
Pas vraiment le seul...
Le plus puissant? Le plus rapide? Simple question de timing?Performances
Qualit de l'API rseau
http://en.wikipedia.org/wiki/Comparison_of_server-side_JavaScript_solutions
Communaut
Projet open-source
dmarr en 2009
Top 3 des projets
les plus surveills sur github
Plus de 150 contributeurs
Plus de 2000 modules
Et a ne fait que commencer!
Performances
Choix de l'asynchrone = garantie d'un meilleur
temps de rponse et d'une
meilleure gestion de la monte
en charge
attente de ressources
versus
jamais bloqu
Un petit benchmark ?
http://naholyr.fr/2011/06/benchmark-node-js-methodes-synchrones-ou-asynchrones/
Modules & dpendances
Node est modulaire
require()
Gestionnaire de modules
officiel: npmpackage.json
Gestion des dpendances
Dependency-hell will burn your brain !
Installation locale au projet
Possibilit d'utiliser ses propres dpts
Isaacs @izs http://npmjs.org
La soupe de callbacks
async simplifie:Les appels successifs
Les appels en cascade
github.com/caolan/async
foo(function (err, res1) {
if (err) throw err;
bar(result1, function (err, res2) {
if (err) throw err;
baz(res2, function (err) {
if (err) throw err;
biz(function (err) {
zOMG INDENT OVERFLOW !!1!eleven!
})
});
});
});
async.waterfall([
function (c) {
foo(c);
},
function (res1, c) {
bar(res1, c);
},
function (res2, c) {
biz(c) HMMM I FEEL NICE :)
}
], function (err) {
throw err;
});
Web: on repart de !
Pas de vrais frameworks full-stackSurtout pas d'ORMs en fait (mais c'est pas grave)
Mais des microframeworks
Let me introduce
npm install express
app.get('/', function (req, res) {
res.render(home, {title: hello});
}
app.get('/profile/:id', function (req, res) {
var user = User.find({id: req.params.id});
if (!user) {
res.send('Invalid user ID', 404);
} else {
res.render(profile, {user: user});
}
});
TJ Holowaychuk @tjholowaychuk
Learnboost - https://github.com/learnboost
Temps rel
socket.ioCt client et aussi ct serveur!
Ct serveur: Connexions, traitements, broadcasting...
Ct client: Fallback automatique sur la technologie dispo
(Websockets, Flash, Long polling, iframe...)
Push!
var client = new io.Socket(); client.on('connect', function(){
alert('ready to play');});client.on('message', function(msg){ if
(msg.win || msg.lose) {
alert(Win? Lose?);
}});
var server = io.listen(app);
// Un nouveau gagnant toutes les 10 secondes
setInterval(function () {
if (server.clients.length < 2) {
server.broadcast({lose:true});
} else {
var client = getRandom();
client.send({win:true});
server.broadcast({lose:true}, client);
}
}, 10000);
Techno hype = cloud
dotclouddeploy -t nodejs ns.nom
push ns.nom
http://nom.ns.dotcloud.com
cloud9ideIDE en ligne
Liaison directe avec github
Test serveur en live
Pleins de projets top cool
http://nodecloud.org
Questions subsidiaires ?
Muokkaa otsikon tekstimuotoa napsauttamalla
Muokkaa jsennyksen tekstimuotoa napsauttamallaToinen jsennystasoKolmas jsennystasoNeljs jsennystasoViides jsennystasoKuudes jsennystasoSeitsems jsennystasoKahdeksas jsennystasoYhdekss jsennystaso