2. Navigateur vs serveur

Nous avons vu que pour chaque navigateur, il y a un moteur différent pour interpréter votre code JavaScript. Eh bien, comme Node.js utilise aussi le JavaScript, il doit bien utiliser également un moteur JavaScript quelque part. Ce moteur JavaScript est inclus directement dans Node.js, et n’est autre que… le moteur JavaScript de Chrome, le moteur V8 !

Et oui, lorsque Ryan Dahl a créé Node, afin de pouvoir exécuter du JavaScript en dehors du navigateur, il a eu la brillante idée de récupérer le moteur JavaScript le plus performant de l’époque, le moteur Javascript V8 de Chrome, et de l’inclure dans son projet Node.js. Il a pu en profiter car le moteur V8 de Google est disponible en OpenSource. C’est ainsi qu’il a pu créer la plateforme Node.js !

Attends, tu veux dire que c’est le même moteur JavaScript qui interprète mon code dans Chrome… et dans mes futures applications Node.js ?  🤓

Exactement ! Vous avez tout compris. C’est pour ça que même si Node.js se situe du côté du serveur, vous pouvez faire un lien entre les deux. 👍

Voici un schéma pour que tout cela devienne limpide pour vous :

Le fonctionnement du JavaScript dans un navigateur et sur un serveur.

Comme nous pouvons le constater :

  • Dans le navigateur, le JavaScript est interprété par le moteur JavaScript de ce navigateur, qui est différent pour chacun.
  • Sur le serveur, le JavaScript est interprété par le moteur JavaScript V8 de Chrome, qui est inclus dans Node.js.

Et si l’on reprend notre définition avec les « environnements » de tout à l’heure, on peut écrire les deux égalités suivantes :

  • Environnement Web = Navigateur + Moteur JavaScript.
  • Environnement Serveur = Node.js + Moteur V8 de Chrome + Modules internes (On verra cela plus tard, mais du côté du serveur vous interagissez avec votre environnement différemment qu’avec le navigateur. Par exemple, les console.log écrits en Node.js n’apparaissent pas dans le navigateur. Normal me direz-vous, mais encore faut-il l’avoir en tête).

C’est comme cela que l’on peut écrire du JavaScript sur le serveur. J’espère que tout cela ne vous paraît plus être de la magie noire, et que vous commencez à y voir plus clair.