1. C’est quoi, « Node.js » ?

Alors commençons par le commencement, qu’est-ce que c’est NodeJS, au fait ? Eh bien c’est un environnement permettant d’exécuter du JavaScript côté serveur… et non dans le navigateur !

« Heu, … c’est moi où ta définition est encore plus compliquée que le mot de départ ? »  🤔

Effectivement, nous devons commencer par définir ce qu’est un “environnement ». Un environnement en informatique, c’est le lieu où votre code est exécuté, c’est-à-dire le moment où votre code de développeur (incompréhensible pour les humains normaux), devient un produit utilisable par tous, comme un site web ou une application mobile par exemple.

Lorsque vous développez vos sites web, comme à votre habitude, votre environnement est le navigateur. C’est normalement un environnement avec lequel vous êtes à l’aise. Mais c’est là où vous allez apprendre une première chose, c’est qu’il y a un moteur JavaScript dans votre navigateur. Et oui, le code JavaScript que vous écrivez ne fonctionne pas par magie, il faut bien un outil pour l’interpréter. Bien sûr, nous n’en savions rien, car c’est en partit le boulot du navigateur qui s’occupe de tout ça pour nous, sans rien nous demander de plus.

Du coup, chaque navigateur a son propre « outil invisible », c’est-à-dire son propre moteur JavaScript. Et ce moteur est différent en fonction du navigateur que vous utilisez. Si vous utilisez Internet Explorer (Pourquoi faites-vous ça ? 😆), alors votre code JavaScript est interprété par le moteur JavaScript « Chakra ». Par contre, avec Mozilla, votre code sera mouliné par le moteur JavaScript « SpiderMonkey ». Et enfin, pour vous donner un dernier exemple, sous Chrome, c’est le moteur JavaScript « V8 » qui est utilisé. J’ai résumé toutes ces barbantes explications dans le schéma ci-dessous :

Les moteurs JavaScript utilisés dans chaque navigateur.

Et maintenant, je vais vous faire une révélation qui a bouleversé ma vie de développeur.

Si votre code JavaScript n’est pas interprété de la même manière en fonction des navigateurs, … alors c’est pour cela que le même code JavaScript peut fonctionner dans un navigateur et pas dans un autre ! Vous pouvez passer des nuits entières à vous demander ce qui ne va pas dans votre code, alors que c’est simplement que le moteur JavaScript du navigateur que vous utilisé qui est différent. 😯

Une blague récurrente revient souvent entre développeurs, c’est de dire qu’Internet Explorer est le pire navigateur. En effet, pendant un certain nombre d’années, son moteur JavaScript Chakra était moins performant que celui de ses concurrents. Du coup, le code des développeurs fonctionnait toujours moins bien sous Internet Explorer !

Heureusement, vous apprenez JavaScript au bon moment, car les technologies modernes « lissent » ce comportement pour nous. Je vous garantis que faire du JavaScript il y a encore quelques années était beaucoup moins drôle.

Bon, mais ne soyons pas mauvaise langue, et reprenons nos explications. Pour le moment, nous savons cela :

Entre votre code JavaScript et l’application finale, il y a le moteur JavaScript du navigateur qui bosse pour vous !

On a déjà passé une sacrée étape.

Mais où est-ce que Node.js se situe là-dedans ? 🙄

Eh bien, justement il ne situe pas « là-dedans », car sur le schéma précédent nous sommes dans le navigateur, et nous raisonnons comme un développeur d’applications web. Il faut donc que l’on passe du côté du serveur pour voir où se situe exactement Node.js. En effet, nous avons vu ce qu’est un « environnement » en informatique, nous savons à peu près ce qu’est le JavaScript, mais il faut maintenant que nous nous intéressions à la partie serveur pour bien comprendre la définition complète.