Node.js

De EduTech Wiki
Aller à la navigation Aller à la recherche

Cet article est en construction: un auteur est en train de le modifier.

En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.



Introduction

Node.js (également abrégé en Node par la suite) est un interprète du langage JavaScript qui permet d’utiliser JavaScript en dehors des navigateurs web, notamment dans le « côté-serveur », les desktops ou les « embedded devices ». Les caractéristiques principales de Node concernent le fonctionnement basé sur les événements et l’architecture « non-blocking » des mécanismes d’input/output (I/O). Grâce à ces particularités, Node est surtout utilisé dans le développement d’applications web « scalables », c’est-à-dire qui permettent de moduler les ressources hardware nécessaires en fonction du nombre d’utilisateurs et/ou de la puissance computationnelle nécessaire.

Objectifs de cette page

Cette page a des finalités pédagogiques sur la sensibilisation à l’utilisation de JavaScript dans d’autres environnements que le navigateur web, elle ne propose donc pas l’illustration exhaustive des caractéristiques techniques de Node.js. Les concepts et exemples illustrés sont donc limités à des environnements de test et/ou contrôlés par les développeurs et ne doivent pas être utilisés dans des situations ou la fiabilité et la sécurité sont primordiales. Pour comprendre le contenu de cette page la lecture des pages suivantes et conseillée :

Avertissement de sécurité

Contrairement à JavaScript côté-client dont l’exécution est contrôlée/limitée par les navigateurs web, Node.js peut avoir accès au système d’exploitation sur lequel il est installé. Ceci signifie que si vous installé Node.js sur votre ordinateur, Node.js peut potentiellement interagir avec des fichiers de système. Il faut donc faire beaucoup plus attention avec Node.js par rapport à JavaScript côté-client même en phase de développement/test ! Il y a le risque de corrompre ou effacer des fichiers importants même au niveau du fonctionnement du système !

L’écosystème Node.js

Node.js est une sorte d’écosystème qui permet aux développeurs d’utiliser JavaScript dans des fonctions de I/O telles que :

  • Lire/Écrire des fichiers
  • Accéder et/ou manipuler des bases de données
  • Créer des applications réseaux comme des server web ou des streaming audio/vidéo
  • Etc.

Pour obtenir cela, Node.js met à disposition des développeurs des « modules » qui sont déjà disponibles avec l’interprète ou qui peuvent être gérés grâce à npm, un gestionnaire de bibliothèques installé automatiquement avec Node.js. Ce gestionnaire permet d’ajouter facilement des « extensions » qui peuvent être téléchargées et utilisées :

  1. Dans des applications Node (e.g. express)
  2. En tant qu’outils pour effectuer des tâches liées au développement telles que des tests (e.g. karma), gestions de bibliothèques JavaScript et/ou CSS (e.g. bower), génération de squelettes pour applications (e.g. yeoman), etc.

Quelques mots sur la ligne de commande

Pour utiliser Node.js il faut utiliser très souvent la ligne de commande. Il y a différentes possibilités pour ouvrir une ligne de commande et cela dépend notamment du système d’exploitation utilisé, mais les commandes illustrées par la suite devraient marcher dans toute ligne de commande. Voici une liste de logiciels de ligne de commande pour les principaux systèmes d’exploitation :

  • Pour Windows utiliser Windows PowerShell
  • Pour Mac utiliser le Terminal
  • Pour Linux utiliser l’une des lignes de commandes disponibles selon la version.

Position dans l’arborescence du système

Lorsque vous utilisez la ligne de commande de votre ordinateur il faut être très attentifs au dossier dans lequel vous vous trouvez, parce que c’est au niveau de ce dossier qui vont s’exécuter des éventuelles actions d’Input/Output générées par Node. Le dossier dans lequel vous vous trouvez s’affiche normalement sur la gauche de votre ligne de commande, sinon elle peut être récupérée avec la commande pwd.

--> Image

Quelques commandes de gestion de fichiers en ligne de commande

Vous pouvez également « naviguer » à travers les dossiers directement à l’intérieur de la ligne de commande, ainsi qu’obtenir des informations sur le contenu du dossier.

Avec la commande cd vous pouvez vous déplacer dans d’autres dossier avec des adresses relatives ou absolus :

  • cd Documents se déplace dans un dossier « Documents » contenu à l’intérieur de la position actuelle
  • cd ../ se déplace à un niveau supérieur par rapport à la position actuelle
  • cd C:/Users/votrelogin/Music se déplace dans la position absolue du dossier Music

Évitez de travailler en ligne de commande dans des dossiers de système de votre système d’exploitation (e.g. C:/Windows/System) ou directement dans des dossier racines comme par exemple le dossier C:/ en Windows. Il est mieux de travailler dans de sous-dossier créés exprès pour tester de scripts Node.js.

Pour vous orienter dans les chemins de vos dossiers, vous pouvez lire le contenu d’un dossier avec la commande ls qui affiche tous les fichiers et dossier contenu dans la position actuelle.

De plus, vous pouvez également utiliser des commandes pour créer, renommer ou effacer des dossiers ou des fichiers directement en ligne de commande. Ces commandes ne sont pas l’objet de cette page, donc on se limitera à l’exemple de la commande mkdir qui permet de créer un nouveau dossier :

mkdir test

Cette commande crée un dossier nommé « test » à l’intérieur de la position actuelle de votre ligne de commande.

Installation de Node.js

L’installation de Node est très simple pour des finalités de développement et de test, mais plus complexe – au moins en ce moment (novembre 2015) – pour les environnements de production, qui ne seront pas traités dans cette page.

Node.js est disponible à travers le site officiel. Le download est disponible directement sur la page d’accueil, qui suggère directement la version adaptée à l’ordinateur de l’utilisateur, ou dans la page « Downloads » qui permet de choisir parmi les différentes versions disponibles.

--> Image

Node est disponible pour Windows, Mac et Linux, ainsi que d’autres systèmes. Pour les systèmes Windows et Mac, Node met à disposition des versions avec « installer » qui représente la manière la plus simple pour ajouter Node à votre ordinateur. Il faut choisir :

  • La version Windows Installer, avec extension .msi, pour Windows
  • La version Macintosh Installer, avec extension .pkg, pour Mac

Ensuite, il suffit de suivre les étapes du programme d’installation. Les réglages suggérés sont adaptés pour la plupart des nécessités, il ne faut donc pas faire des changements normalement. Pour les installations Windows il faut juste être attentifs à la nécessité d’ajouter Node.js au PATH ainsi que la commande « node » sera disponible partout dans le système. Cette option est cochée en automatique dans les réglages suggérés, il faut donc juste éviter de la décocher :

--> Image

La commande node

Pour contrôler que Node a bien été installé, ouvrez la ligne de commande (voir plus haut dans la page) et tapez directement le code :

node -v

La version installée de Node.js devrait s’afficher sur la ligne de commande. Voici le résultat pour la Windows PowerShell avec Node.js version 4.2.2. Faites attention avec Linux parce que parfois la commande associée n’est pas node mais peut être nodejs.

--> Image

Console Node (REPL)

Lorsque vous tapez tout simplement node, par contre, vous avez accès à la console de Node.js qui est tout à fait similaire à la console utilisée dans les navigateurs web. Ce type de console est également appelé « Read-eval-print loop » (REPL) parce qu’elle permet de :

  1. Lire (i.e. Read) du code
  2. Évaluer (i.e. Eval) les expressions
  3. Afficher (i.e. Print) le résultat

Vous pouvez donc saisir directement des commandes JavaScript dans la ligne de commande après le > :

--> Image

Pour sortir de la modalité console de Node.js tapez deux fois sur Ctrl + C. Cette commande est utile pour sortir de toute opération en ligne de commande en général.

--> Image

Exécuter le code dans un fichier JavaScript

La commande node accepte également un ou plusieurs arguments, dont le premier est la référence à un fichier.js contenant du code, et les suivants sont des arguments qui sont passés au script :

node [fichier.js] [arg1, arg2, …]

Pour essayer vous pouvez créer un fichier script.js dans un dossier avec le simple code suivant :

console.log(‘Script Node.js’) ; 

Ensuite il faut accéder à ce dossier avec la ligne de commande (voir plus haut dans la page) et saisir :

node script.js

Si on passe des arguments à la commande, ceux-ci seront accessibles à l’intérieur d’un script grâce à un array nommé process.argv qui se compose de la manière suivante :

  • process.argv[0] = node
  • process.argv[1] = nom du fichier avec le script (e.g. script.js)
  • process.argv[2] = premier argument passé après le nom du script
  • process.argv[3] = deuxième argument passé après le nom du script

Voici le code d’un fichier script.js qui écrit dans la console un message avec l’argument passé après le nom du script :

var nom = process.argv[2];
console.log("Hello " + nom);

Pour obtenir un message de hello il faut donc écrire dans la console :

node script.js votrenom

La commande npm

La commande npm peut être utilisée pour plusieurs finalités qui vont au-delà des objectifs de cette page. Pour l’occasion, nous limiterons son intérêt à la fonction d’installation des modules Node.js. L’installation peut se faire à deux niveaux :

  1. Installation en locale dans la position actuelle en ligne de commande
  2. Installation global dans le système

En phase de développement/test il est souvent utile d’installer les modules de manière globale ainsi qu’ils soient disponibles à tout endroit dans le système. Voici le code pour installer le module bower qui est très utile pour gérer des bibliothèques JavaScript/CSS côté frontend :

npm install -g bower

Pour une installation locale il faut tout simplement enlever le paramètre -g. Dans ce cas les fichiers seront installés dans un répertoire node_modules dans la position actuelle de la ligne de commande.