This is an old revision of the document!


TP 1 - Introduction sur NodeJS

Installation de NodeJS / éditeur de texte

Éditeurs de texte

NodeJS

  • Naviguez vers http://www.nodejs.org
  • Téléchargez NodeJS version 12 LTS pour votre système d'exploitation (Windows/Linux/Mac)

Tutoriel NodeJS

Standard

Afin de lancer plus d'erreurs qui vont vous aider à deboguer (debug) les programmes, il faut que tous les programmes que vous créez commencent par :

"use strict";

Types de données en JavaScript

  • Primitives
    • Number
    • String
    • Boolean
    • Symbol
    • Null
    • Undefined
  • Object

Affichage des données

La fonction console.log() est utilisée pour afficher sur l'écran les données reçues comme paramètres. On peut lui passer plusieurs arguments.

console.log(5); // => 5
console.log("Hello World!"); // => Hello World!

Variables

Les variables sont utilisées pour stocker des données. JavaScript est typé dynamiquement comme la plupart des autres langages de script. (Tous les types de données peuvent être déclarés avec var; on n'a pas int, float, boolean…). Par exemple, une variable initialement associée à un nombre peut être réaffectée à une chaîne de caractères.

var x = 20;
var y = x + 5;
 
console.log (x);  // 20
console.log (y);  // 25

Le mot-clé let permet de déclarer des variables dont la portée est limitée à celle du bloc dans lequel elles sont déclarées. Le mot-clé var permet de définir une variable globale ou locale à une fonction (sans distinction des blocs utilisés dans la fonction).

var i;
for(i = 0; i < 2; i++) {
   var a = 1;
   let b = 2;
   console.log(i + a + b);
}
 
/* Output:
3
4
*/
 
console.log(i); //2
console.log(a); //1
console.log(b); //ReferenceError: b is not defined

String

L'objet global String est un constructeur de chaînes de caractères. Les littéraux de chaînes de caractères peuvent avoir l'une des formes suivantes :

"text"
'text'

Enchaînement des Strings (concatenation)

L'opérateur + effectue une concaténation des chaînes de caractères si au moins l'un des opérandes est une chaîne. Ensuite, l'autre opérande est converti en chaîne.

console.log("Hello " + "World!"); //Hello World!
console.log("It's " + 2019); //It's 2019

Créer un nouveau projet en Node.js

Vous avez la possibilité soit d'utiliser l'interface graphique pour créer les directoires et les fichiers nécessaires, soit d'introduire les commandes suivantes dans Node.js command prompt!

Créer un directoire pour le projet:

mkdir folder_name #ex: mkdir Projet

On accède au répertoire qu'on vient de créer en utilisant la commande cd (change directory) qui reçoit comme paramètre le chemin vers le directoire. Le chemin peut être:

  • absolu - contient le directoire racine et tous les autres sous-directoires dans lesquels un fichier ou un directoire est contenu (ex: C:\Users\student\Desktop\Projet)
  • relatif - commence à partir du directoire de travail donné (ex: Desktop\Projet)
cd path_to_folder #ex: cd Projet, cd Desktop/Projet

On doit créer un fichier nommé package.json. Pour ne pas saisir les données mannuellement, il est recommandé dutiliser le gestionnaire de paquets npm.

npm init

Après avoir introduit cette commande dans le terminal Node.js, il faudra fournir des informations sur le nouveau projet afin de remplir certains champs. Si vous n'etes pas sûr de ce qu'il faut écrire, vous pouvez tout simplement appuyer sur la touche Enter pour associer les valeurs par défaut.

Pour installer des modules, on utilise npm install. Le drapeau --save les ajoutera automatiquement à votre package.json (pour une installation globale, on utilise -g):

npm install lib_name --save

Pour exécuter le projet, on écrit la commande suivante (on doit être dans le même directoire que le fichier!):

node file_name.js

Si on a besoin d'autres paramètres supplémentaires pour exécuter le programme, on va les écritre apres le nom du fichier, comme dans l'exemple suivant:

node file_name.js param1 param2

Modules de NodeJS

La signification des modules en NodeJS est la même que pour les bibliothèques JavaScript. Plus précisément, le module contient un ensemble de fonctions que vous allez inclure dans votre application. Pour inclure un module dans le projet, il faut utiliser la fonction require(), accompagnée par le nom du module:

var module_name = require('module_name');

Par exemple, pour fournir une interface facile à utiliser en appliquant des couleurs et des styles à la sortie de ligne de commande, on peut inclure le module chalk dans le projet.

var chalk = require('chalk');
console.log(chalk.blue('Hello world!'));

Écrire dans un fichier

Pour écrire dans un fichier, on utilise le module fs, de la façon suivante:

var fs = require('fs');
 
try {
   fs.writeFileSync('file_path', text_to_write, 'utf8'); //UTF-8 est l'encodage du texte
} catch(err) {
   console.error(err);
}

Lire un fichier

Pour lire un fichier, on utilise le meme module fs, mais comme dans l'exemple suivant:

var fs = require('fs');
 
try {
   var data = fs.readFileSync(file_path).toString();
   console.log(data); //contenu du fichier (String)
} catch(err) {
   console.error(err);
}

Instructions conditionnelles

En JavaScript, nous avons les instructions conditionnelles suivantes:

  • if - pour spécifier un bloc de code à exécuter, si la condition est vraie
  • else - pour spécifier un bloc de code à exécuter, si la même condition qua est fausse
  • else if - pour spécifier une nouvelle condition à tester, si la première condition est fausse
  • switch - pour spécifier plusieurs blocs de code alternatives à exécuter

If

var x = 1;
 
if(x === 1) {
console.log(x); //l'instruction s'execute
}
 
if(x > 3) {
console.log(x + 3); //l'instruction ne s'execute pas
}

If Else

var x = 5;
 
if(x < 3) {
   console.log(x + 3);
}
else {
   console.log(x + 1); //seulement cette instruction s'execute
}

If Else if

var x = 2;
 
if(x < 3) {
   console.log(x + 3); //seulement cette instruction s'execute
}
else if (x > 4){
   console.log(x + 1);
}

Switch

var x = 2;
 
switch(x) {
   case 1:
      console.log(x + 1);
      break;
   case 2:
      console.log(x + 2); //seulement cette instruction s'execute
      break;
   case 3:
      console.log(x + 3);
      break;
   default:
      console.log(x); //instruction qui s'execute si x n'est pas egal a 1, 2 ou 3
   }

Boucles

Les boucles peuvent exécuter un bloc de code plusieurs fois.

For

La boucle for parcourt un bloc de code un certain nombre de fois.

var x = 10;
var sum = 0;
 
for(let i = 1; i <= x; i++) {
   sum += i;
}
 
console.log(sum); //55

While

La boucle while parcourt un bloc de code tant qu'une condition spécifiée est vraie.

var x = 1;
var sum = 0;
 
while(x <= 10) {
   sum += x;
   x++;
}
 
console.log(sum); //55

Oprateurs

Operateur Description Example
+ Plus x + y
- Moins x - y
* Multiplication x * y
/ Division x / y
% Reste de la division x % y
== Valeur d'égalité x == y
=== Égalité de la valeur et du type x === y
!= Valeur différente x != y
!== Différence de la valeur ou du type x !== y
< Moins grand x < y
Moins grand ou égal x ⇐ y
> Plus grand x > y
>= Plus grand ou égal x >= y
! Pas !x
&& Et x && y
|| Ou x || y
& AND x & y
| OR x | y
~ NOT x ~ y
^ XOR x ^ y
» Right Shift x » y
« Left Shift x « y

Excercices

  1. Installez Node JS 12 et un éditeur de texte (Visual Studio Code, Sublime Text, Atom, Brackets). (1p)
  2. Faites un nouveau projet en Node JS qui s'appelle printname.
    1. Faites un nouveau directoire printname. (0.3p)
    2. Dans le nouveau directoire, créez un fichier index.js (0.3p)
    3. Entrez dans le directoire et utilisez la commande npm init. (0.4p)
  3. Ecrivez un programme qui affiche sur l'écran votre nom et prénom, en utilisant l'opération de concaténation. (0.5p)
  4. Faites un nouveau projet qui s'appelle systeminfo. Inspectez la documentation du module os et utilisez-le pour afficher les données suivantes (Attention! L'installation du module n'est pas nécessaire, il suffit d'importer le module dans le projet):
    1. l'endianité du cpu (endianness of the CPU, exemples: 'BE' , 'LE') (0.3p)
    2. le repertoire de base pour l'utilisateur actuel(home directory) (0.3p)
    3. la mémoire disponible en MB (1KB = 1024B, 1MB = 1024KB) (0.4p)
  5. Déclarez une variable pour la mémoire en kB, une pour la mémoire en MB (nombres entières), une pour le repertoire de base et une avec l'endianité du processeur. Ajoutez ces variables dans un string, avec des espaces entre eux. Affichez le string sur l'écran. (1p)
  6. Ecrivez dans le fichier os.info toutes les informations de l'exercice précédent. (0.5p)
  7. Installez le module chalk, en utilisant npm. Le module doit être ajouté automatiquement en package.json. (0.5p)
  8. Affichez toutes les variables de l'exercice 4 avec des couleurs différentes, en utilisant le module chalk. (0.5p)
  9. Stockez dans une variabe le nombre de secondes écoulées depuis le temps de démarrage du système (uptime).
    1. Affichez sur l’écran : “Your system has been running for: ” + le nombre de secondes. (0.5p)
    2. Si le nombre est paire, affichez sur l'écran “The system has been running for an even number of seconds”. Si le nombre est impaire, affichez “The system has been running for an odd number of seconds”. (0.5p)
  10. Faites un projet qui s'appelle math. En utilisant la boucle for, affichez :
    1. tous les nombres entres 1 - 300 (0.4p)
    2. les mêmes nombres en ordre inverse (0.4p)
    3. tous les nombres divisibles par 9 (0.4p)
    4. tous les nombres divisibles par 3 et 11 (0.4p)
    5. tous les nombres divisibles par 5 ou 6 (0.4p)
  11. Stockez un nombre quelconque dans une variable. Utilisez la boucle while pour compter ses diviseurs. Affichez sur l’écran :
    1. “I chose the number x which has y divisors”, où x représente la valeur du numéro que vous avez choisi et y le numéro de ses diviseurs (0.5p)
    2. Si le nombre est premier. (0.5p)
  12. Bonus: Utilisez le module cowsay pour afficher les spécifications de l'exercice 5. (1p)

Solutions

alf/laboratoare/01.1582564889.txt.gz · Last modified: 2020/02/24 19:21 by alexandru.radovici
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0