Node.js – Quelques concepts avant de commencer à coder

Fonctions d’ordre supérieur, callbacks et boucles d’événement dans le nœud.

Exploring NodeJS

Cet article vous aidera à comprendre les différents concepts à la base de Node.js et vous permettra de créer des applications prêtes pour la production.
Node.js utilise un modèle d’Entrée/Sortie basé sur des événements non-bloquant, qui le rend léger et efficace.
Nous avons tous lu la déclaration précédente, mais que signifie-t-elle vraiment ? Essayons de comprendre ensemble comment fonctionnaient les modèles de serveur traditionnels.

Modèle de serveur traditionnel

Dans un modèle de serveur traditionnel, pour chaque requête adressée au serveur, un thread est créé pour gérer la même requête. Ce type d’implémentation n’évolue pas beaucoup, car le nombre de requêtes multiples que votre serveur peut gérer est directement proportionnel au nombre de threads que votre machine peut générer.

Modèle de serveur Node
Modèle de serveur Node

Dans Node, un processus consiste en un thread principal d’exécution et une myriade de threads d’arrière-plan (effectuant généralement un travail d’E/S).
La coordination entre les threads d’arrière-plan et le thread principal est effectuée via une file d’attente.
Le thread principal extrait les tâches de la file d’attente, les met en file d’attente dans l’ordre dans lequel elles ont été reçues, et les exécute.
Voici quelques exemples d’avantages de l’utilisation de Node.js:

  • Réduction du temps de développement.
  • Baisse du nombre de serveurs nécessaires / le coût du serveur.
  • Réduction le temps de réponse de l’API / le temps de chargement de la page.

Mais il y a des cas où vous ne devriez pas utiliser Node.js. Voici un exemple dans cet article d’Uber Engineering.

Avant de réellement coder dans Node.js, je voudrais mentionner quelques-uns des concepts de base de Javascript qui permettent à Node.js de fonctionner comme il le fait.

1. Higher Order Functions

Cela peut être une chose très courante pour tout développeur JavaScript, mais une personne novice en JS pourrait trouver cela bizarre. En JavaScript, vous pouvez transmettre une fonction en tant que paramètre à une autre fonction. Comprenons cela avec un exemple simple.

function speak(name, callback) {
  alert(`${name} threw a boomerang few years ago`);
  callback();
}
function sayWhat(){
  alert('Now he lives in fear!');
}
speak('Pankaj', sayWhat);

Il suffit d’entrer ce code dans Jsbin et voir la magie ! Dans l’exemple ci-dessus, on transmet la fonction speak à la fonction sayWhat.

2. Callbacks

Dans le code précédent, nous avons vu l’utilisation du callback. L’instruction suivante interrompt l’exécution du code.

alert(`${name} threw a boomerang few years ago`);

Une fois que vous avez fermé l’alerte, on appelle la méthode transmise. Ceci s’appelle un callback.

3. Event Loop

Tous les appels de fonction sont placés dans une pile d’appels. La boucle d’événements vérifie en permanence cette pile d’appels pour voir s’il y a une fonction à exécuter. Ce faisant, il ajoute tout appel de fonction trouvé à la pile d’appels et les exécute dans l’ordre.

Je recommande cette vidéo d’explication de Philip Roberts.

Adoptons une approche pratique pour comprendre la boucle d’événement. Commencez par exécuter le code ci-dessous.

function first(){
  console.log('First Function, So Wow!!'); // 1
}
function second(){
  console.log('Second Function, So Wow Wow!!'); //2
}
console.log('Hello World!'); // 3
first();
second();
console.log('Callbacks are cool '); // 4

Le code ci-dessus fonctionne comme ceci : 3 → 1 → 2→ 4.

function first(){
  console.log('First callback, So Wow!!'); // 1
}
function second(){
  console.log('Second callback, So Wow Wow!!'); // 2
}
console.log('Welcome to the meetup'); // 3
setTimeout(first,0);
second();
console.log('Callbacks are cool'); //4

Le résultat d’un setTimeout est l’appel de la fonction qui est passée en premier paramètre, avec le temps mentionné dans le second paramètre. Comme le temps donné est 0, vous pourriez penser que la sortie est 3 → 1 → 2 → 4.
A cause du fonctionnement des boucles d’événement, il s’agit en réalité de 3 → 2 → 4 → 1.

Nous en avons terminé avec cet article et les quelques concepts de base.
Cette introduction à NodeJS est une traduction de l’article “Node.js – Some Concepts Before You Start Coding”, écrit par Pankaj Panigrahi.
C’est le 1er article d’une série d’article sur le thème de NodeJS, toujours écrit par Pankaj Panigrahi.
Si vous voulez que je traduise les autres articles, n’hésitez pas à me le dire.