Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Angular et Node.js
  3. La plateforme Node.js
Extrait - Angular et Node.js Optimisez le développement de vos applications web avec une architecture MEAN (2e édition)
Extraits du livre
Angular et Node.js Optimisez le développement de vos applications web avec une architecture MEAN (2e édition) Revenir à la page d'achat du livre

La plateforme Node.js

Présentation de Node.js

Node.js est un environnement permettant d’exécuter du code JavaScript hors d’un navigateur. À l’heure de la rédaction de cet ouvrage, il repose sur le moteur JavaScript V8 développé par Google pour ses navigateurs Chrome et Chromium.

Son architecture est modulaire et événementielle. Il est fortement orienté réseau en possédant pour les principaux systèmes d’exploitation (Unix/Linux, Windows, Mac OS) de nombreux modules réseau (dont voici les principaux par ordre alphabétique : DNS, HTTP, TCP, TLS/SSL, UDP). De ce fait, il remplace avantageusement, dans le cadre qui nous intéresse ici (c’est-à-dire la création et la gestion d’applications web), un serveur web tel qu’Apache.

Créé par Ryan Lienhart Dahl en 2009, cet environnement est devenu rapidement très populaire pour ses deux qualités principales :

  • Sa légèreté (en corollaire de sa modularité).

  • Son efficacité induite par son architecture monothread (en corollaire de la gestion événementielle que propose nativement l’environnement JavaScript).

Intégrer Node.js dans le développement d’applications web participe donc à la logique actuelle de rendre les opérations d’accès aux données les moins bloquantes...

Installation et test de Node.js

1. Création du fichier de test

Pour tester Node.js, vous allez dans un premier temps créer un code JavaScript qui va être le plus simple possible, et le faire exécuter par Node.js.

 Créez donc le fichier testDeNode.js qui ne comprend qu’une ligne de code :

console.log("Test de Node"); 

2. Installation et test de Node.js sous Ubuntu

 Pour installer Node.js sous Ubuntu, le plus simple est d’utiliser la commande curl et le gestionnaire de paquets en ligne de commande (apt-get) :

curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash - 
sudo apt-get install nodejs 

Il est à noter qu’au jour de l’écriture de cet ouvrage, la version courante de Node.js est la 11. Pour une version ultérieure, il suffit de changer son numéro de version dans la commande d’installation.

 Un lien symbolique nommé node peut être créé pour lancer plus naturellement vos serveurs :

sudo ln -s /usr/bin/nodejs /usr/bin/node 

 Ouvrez un terminal (shell) et exécutez le fichier de test :

node testDeNode.js 

La chaîne de caractères « Test de Node » s’affiche !

Une procédure complète est en ligne sur http://doc.ubuntu-fr.org/nodejs.

3. Installation et test de Node.js sous Windows

L’installation de Node.js et son test sous Windows vont se dérouler en quatre étapes...

La modularité de Node.js

1. Les modules et les packages

Une des principales forces de Node.js est d’être modulaire (et notamment de proposer de nombreux modules réseau). Si certains de ces modules sont installés directement en même temps que Node.js, la plupart doivent être installés à la demande.

Lors de la création d’une application qui exige l’installation de modules, deux méthodes sont possibles pour effectuer celle-ci :

  • Directement avec le gestionnaire de modules npm (et son option install).

  • Indirectement (mais toujours avec npm) via la spécification des dépendances de l’application (c’est-à-dire des modules nécessaires à celle-ci) dans un fichier nommé package.json.

Un module est utilisé dans une application avec la fonction require() :

var moduleDansVotreApplication = require('<nomDuModule>'); 

Votre application Node.js peut être elle-même réutilisée comme module sous certaines conditions qui seront présentées ultérieurement.

Attardons-nous sur un point un peu subtil : la distinction entre modules et packages.

Les modules sont les briques conceptuelles d’une application Node.js. Un module peut être organisé en plusieurs codes JavaScript et dépendre d’autres modules. Ainsi, toutes les ressources nécessaires à un module (les codes, le fichier package.json spécifiant ses dépendances...) sont regroupées dans un package qui, de fait, est un dossier.

Donc, si les deux termes sont quasiment interchangeables, le terme « module » renvoie plus à la fonctionnalité globale, et « package » au dossier et à l’organisation des fichiers de code qui se trouvent dans celui-ci.

a. Le gestionnaire de modules de Node.js : npm

npm (Node.js Package Manager) est le gestionnaire de modules de Node.js (il est installé avec celui-ci).

Les modules sont installés globalement dans le dossier node_modules, situé au niveau des répertoires système si l’option -g est utilisée :

npm install -g <module> 

ou sinon (sans l’option g) dans le répertoire courant (mais également dans un dossier nommé node_modules).

b. Spécification des dépendances : le fichier...

Sécurisation d’un serveur Node.js (protocole HTTPS)

Si vous voulez mettre en place un serveur Node.js HTTPS, la démarche est un peu plus compliquée (dans cette section, les étapes seront illustrées par des commandes exécutées sous Linux/Ubuntu).

 Avant toute chose, installez openssl et pwgen, si ce n’est déjà fait :

apt-get install openssl 
sudo apt-get install pwgen 

Vous devez créer :

1. l’autorité de certification (certificate authority) ;

2. le certificat délivré par le serveur (server certificate).

Ces opérations nécessitent la création d’une passphrase :

pwgen 20 1 -s > passphrase 

1. Création de l’autorité de certification

Une autorité de certification est un tiers de confiance permettant d’authentifier l’identité des correspondants.

Dans cet exemple, vous serez votre propre autorité de certification (ce qui est bien sûr critiquable).

 Générez une clé privée (vous devez alors saisir deux fois la passphrase) :

openssl genrsa -des3 -out ca.key 1024 

 Générez le certificate signing request (vous devez encore saisir la passphrase) :

openssl req -new -key ca.key -out ca.csr 

 Signez le certificat (vous devez saisir la passphrase) :

openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key 

2. Création du certificat...

Bilan des acquis de ce chapitre

Vous savez dorénavant :

  • Créer un serveur Node.js répondant à des requêtes HTTP sur différentes méthodes, ainsi qu’un serveur sécurisé HTTPS.

  • Tester ce serveur, soit via votre navigateur, soit grâce à l’outil curl qui s’utilise en ligne de commande.

  • Créer un module pour pouvoir réemployer des codes JavaScript.

  • L’invoquer sur des routes REST en utilisant le module express qui est un petit framework permettant de créer des applications web.

  • Utiliser le module express pour gérer des templates avec le moteur de templates EJS.

  • Accéder au système de fichiers de l’ordinateur sur lequel s’exécute le serveur Node.js pour exploiter des fichiers contenant des données formatées en JSON :

  • En accédant globalement aux données de ces fichiers.

  • En accédant progressivement aux données de ces fichiers via l’utilisation de flux (streams).

  • Paramétrer les routes REST et utiliser ces paramètres pour filtrer les collections JSON.

Bien que tout cela soit déjà intéressant, il est bien entendu inconcevable de manipuler des données stockées dans des fichiers du système de fichiers. Cela dit, il n’est pas question de renoncer à deux points :

  • Le formatage des données sous la forme de collections...