NodeJS

~
Partie 2

Title Text

  • Lire dans un fichier
  • readdir vs readirsync

Serveur woueb

  • http
  • requete, reponse, ...
  • php vs nodejs : synchrone vs asynchrone 5sec vs 5secx2

Serveur woueb

  • http
  • requete, reponse, ...
  • php vs nodejs : synchrone vs asynchrone 5sec vs 5secx2
var http = require('http');

var server = http.createServer(function (request, response){
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello World");
});

server.listen(8088);

Serveur woueb

  • Créer son propre module
  •  

Utilisation de npm

  • express -> dépendances
    • node_modules
    • -g (global) - nodemon
    • package.json

Utilisation d'Express

  • dépends de connect
  •  

Utilisation d'Express

  • dépends de connect

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('Salut le monde!');
});


app.get('/toto', function(req, res){
  res.send('toto');
});

app.get('/private', function(req, res){
  res.send('unauthorized', 401);
});


Utilisation d'Express

  • création fichier / répertoire public
  • collisions des noms
...
var app = express();

app.use(express.static(__dirname + '/public'))

app.get('/', function(req, res){
...

Utilisation d'Express

  • logger
...
var app = express();

app.use(express.logger()); // avant & aprés static voir différence

app.get('/', function(req, res){
...

Utilisation d'Express - Dynamique

  • logger
...
var app = express();

var count = 0;
var devs = [
  {name: 'Bobby',      level: 3,   bio: 'Bobby est bobby'},
  {name: 'Dave',       level: 1,   bio: 'Dave est un dev'},
  {name: 'Bobbynette', level: 6,   bio: 'Bobbynette est l'amie de Bobby'},
  {name: 'Tom',        level: '2', bio: 'Tom est ton ami sur myspace'},

];

app.get('/counter', function(req, res){
  count += 1;
  res.send("vous êtes"+ count +"sur cette page!");
});

app.get('/devs/1', function(req, res){
  res.send(devs[0].name + " " + devs[0].bio);
}); // Don't repeat your self


app.get('/devs/:id', function(req, res){
  var id =  req.param.id -1;
  var dev = devs[id];
  res.send(dev.name + " " + dev.bio);
});

Utilisation d'Express - Dynamique

  • création formulaire html
    • form action : /create-dev method: POST
...
var app = express();

app.use(express.bodyParser());

app.get(...)
// req.query.name // pour récupérer name dans GET
// req.body.name // pour récupérer name dans POST

app.post('/create-dev', function(req, res){
  devs.push(
    name:  req.body.name,
    level: parseInt(req.body.level, 10),
    bio:   req.body.bio
  );

  res.send("ok bob");
});

Utilisation des templates

  • EJS
...
var app = express();

app.use(express.bodyParser());

app.get(...)
// req.query.name // pour récupérer name dans GET
// req.body.name // pour récupérer name dans POST

app.post('/create-dev', function(req, res){
  devs.push(
    name:  req.body.name,
    level: parseInt(req.body.level, 10),
    bio:   req.body.bio
  );

  res.send("ok bob");
});

Utilisation des templates

  • EJS
...
var app = express();

app.use(express.bodyParser());

app.get(...)
// req.query.name // pour récupérer name dans GET
// req.body.name // pour récupérer name dans POST

app.post('/create-dev', function(req, res){
  devs.push(
    name:  req.body.name,
    level: parseInt(req.body.level, 10),
    bio:   req.body.bio
  );

  res.send("ok bob");
});

Utilisation des bdd

  • https://www.npmjs.com/package/couchdb-utils
  • https://github.com/dscape/nano
  • https://github.com/flatiron/cradle

NodeJS

By Robin Duval

NodeJS

En cours !

  • 384