réu technodejs

Download Réu technodejs

If you can't read please download the document

Upload: naholyr

Post on 16-Apr-2017

1.185 views

Category:

Technology


0 download

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