Skip to content
Jean-Philippe Caissy edited this page Sep 25, 2013 · 3 revisions

Labo 02

Mercredi 18 sptembre

Solution exercice 5 : https://github.com/jpcaissy/INF4375-2013A/blob/master/labo-02/exercice05.js

Objectifs

  • Se familiariser avec Nodte.js et l'asynchronisme.
  • Créer un serveur HTTP avec Node.js.

Ressources

Installation de Node.js

Postes du laboratoire

Au moment où je rédige ce labo, je n'ai aucune information concernant les postes au laboratoire. Si node.js n'est pas installé sur les postes, essayez de l'installer avec l'installeur (.msi). Sinon nous nous limiterons au fichier binaire (.exe).

Windows & Mac OS X

http://nodejs.org/download/

Vous pouvez suivre les instructions pour Windows et Mac OS X sur le Site du zéro.

Ubuntu

Dans une console : sudo apt-get install nodejs

Debian

Node.js est disponible dans les répos unstable (sid). Pour l'installer, suivez les instructions ici : http://ypcs.fi/howto/2012/10/09/nodejs-debian/. Je serai disponible pour vous aider au laboratoire.

Exercice 1

Le premier exercice consiste à se familiariser à node.js en codant directement dans la console (shell). Pour Windows il s'agit de Node.js et non pas Node.js command prompt

Node.js est un framework javascript orienté serveur, à la différence du javascript dans les navigateurs.

  • Ouvrez une console node.js. Sous Windows, exécuter l'application Node.js, sous Mac et GNU/Linux, en ligne de commande exécuter node.
  • Utilisez console.log pour écrire du texte vers la sortie standard (stdout).
  • La console de node.js possède des fonctionalités d'autocomplétion! Dans la console tappez console. (avec le point) puis appuyer sur la touche tab du clavier. Vous verrez toutes les méthodes accessible à partir de console.
  • Quelle est la différence entre les méthodes console.log et console.error ?
  • Avec l'autocomplétion, trouvez la méthode du module os qui permet d'obtenir l'information sur le processeur (CPU).
  • Encore avec le module os, calculer la quantité de mémoire (RAM) utilisé par le système d'exploitation et l'afficher à l'écran.

Exercice 2

Pour installer des modules externes, il existe le programme npm qui permet de gérer l'installation, la mise à jour et la suppression de modules pour vos projets. npm est inclus dans Node.js.

Voici l'aide de npm :

12:43 ~
jp@jp-laptop$ npm -h

Usage: npm <command>

where <command> is one of:
    add-user, adduser, apihelp, author, bin, bugs, c, cache,
    completion, config, ddp, dedupe, deprecate, docs, edit,
    explore, faq, find, find-dupes, get, help, help-search,
    home, i, info, init, install, isntall, issues, la, link,
    list, ll, ln, login, ls, outdated, owner, pack, prefix,
    prune, publish, r, rb, rebuild, remove, restart, rm, root,
    run-script, s, se, search, set, show, shrinkwrap, star,
    stars, start, stop, submodule, tag, test, tst, un,
    uninstall, unlink, unpublish, unstar, up, update, version,
    view, whoami

npm <cmd> -h     quick help on <cmd>
npm -l           display full usage info
npm faq          commonly asked questions
npm help <term>  search for help on <term>
npm help npm     involved overview

Specify configs in the ini-formatted file:
    /home/jp/.npmrc
or on the command line via: npm <command> --key value
Config info can be viewed via: npm help config

Pour installer un module externe : npm install [nom du module] ou npm install express, etc...

Par défaut, npm va créer un dossier node_modules à l'emplacement où vous êtes et y mettre les modules dans ce dossier.

Exercice 3

Pour cet exercice et les exercices à suivre, vous pouvez écrire le code dans un fichier et l'exécuter directement à la ligne de commande avec node nom_du_fichier.js. Pour les utilisateurs de Windows, vous pouvez obtenir la ligne de commande en exécutant le script Node.js command prompt.

Cet exercice a pour objectif de vous familiariser avec l'asynchronisme de Node.js.

Voici un exemple de code Node.js :

var fs = require('fs');

/*
 * Ne jamais utiliser les métohdes synchrones !
 */
fs.writeFileSync('fichier', 'Cette chaine est dans le fichier');

fs.readFile('fichier', function(err, data) {
  if(err) {
    throw err;
  }
  console.log('Callback de la lecture du fichier');
  console.log(data.toString());
});

console.log('Fin du fichier javascript');
  • Avant d'exécuter ce code, que va-t-il se passer selon vous ?
  • Exécutez le code, et tentez de comprendre pourquoi la phrase Fin du fichier javascript n'est pas affiché en dernier.
  • Quelles modifications devrions-nous faire pour afficher la phrase Fin du fichier javascript à la fin de l'exécution du programme?

Exercice 4

Le troisième exercice est fait pour vous familiariser avec l'API du module http.

Pour cet exercice, vous pouvez vous fier à l'exemple de Jacques disponible à l'adrese suivante :

  • Avec le module http, créer un serveur web qui écoute sur le port 8080 et sur l'ip 127.0.01 (localhost). Lorsqu'une connexion est effectué sur le serveur, retournez un Hello World! et le code HTTP 200, ce qui signifie que la requête s'est déroulé avec succès et une simple ligne de texte. Ensuite utilisez un navigateur pour tester la page à l'adresse http://127.0.0.1:8080/.

    Il existe plusieurs code HTTP, mais les plus souvent utilisés sont : 404 (fichier/ressource non trouvé), 403 (accès interdit), 400 (mauvaise requête), 500 (erreur interne du serveur).

Exercice 5

Pour ce dernier exercice, vous devez lire les données d'un fichier XML, et les afficher sur une page HTML. Vous pouvez utiliser le module xmldom pour parser le fichier XML.

Voici le XML à lire : https://github.com/jpcaissy/INF4375-2013A/blob/master/labo-02/bieres.xml et voici un exemple de rendu que votre serveur HTTP devrait faire : https://github.com/jpcaissy/INF4375-2013A/blob/master/labo-02/bieres.html

Pour le module xmldom, vous pouvez vous fier aux exmples de Jacques disponible ici : https://github.com/jacquesberger/exemplesINF4375/tree/master/Node.js/script-lecture-xml

Clone this wiki locally