‫Instructeur : Maintenant, afin de
‫préparer le terrain pour les deux
‫prochaines conférences, commençons par en apprendre un peu plus sur l'architecture Node.
‫Représentons donc cette architecture ici en
‫termes de dépendances de Node, qui
‫ne sont que
‫quelques bibliothèques dont dépend Node pour fonctionner correctement.
‫Ainsi, le temps d'exécution de Node a
‫plusieurs dépendances, et
‫les plus importantes sont le moteur V8 (marmonne) et libuv.
‫Maintenant, nous avons dit avant que Node est un environnement d'exécution JavaScript basé
‫sur le moteur V8 de Google, n'est-ce pas ?
‫Et donc, c'est pourquoi il apparaît ici comme une dépendance.
‫Sans la V8, Node n'aurait absolument aucun moyen de
‫comprendre le code JavaScript que nous écrivons.
‫Et par conséquent, le V8 est un
‫élément fondamental de l'architecture Node.
‫Encore une fois, le moteur V8 est ce qui convertit le code
‫JavaScript en code machine qu'un ordinateur peut réellement comprendre.
‫D'accord, mais cela seul ne suffit pas pour créer un framework
‫côté serveur complet comme Node.
‫Et c'est pourquoi nous avons également libuv dans Node.
‫Et libuv est une bibliothèque open source fortement
‫axée sur les E/S asynchrones.
‫Donc, entrée sortie.
‫Cette couche est ce qui donne à Node
‫l'accès au système d'exploitation de l'ordinateur
‫sous-jacent, au système de fichiers, à la mise en réseau, etc.
‫En plus de cela, libuv implémente également deux fonctionnalités extrêmement
‫importantes de Node. JS qui
‫sont la boucle d'événement et aussi le pool de threads.
‫Et en termes simples, la boucle d'événements est responsable de
‫la gestion de tâches simples telles que l'exécution de rappels et
‫d'E/S réseau, tandis que le pool de threads est destiné à des travaux plus lourds
‫comme l'accès aux fichiers ou la compression ou quelque chose comme ça.
‫Mais vous apprendrez tout à ce
‫sujet, donc sur la boucle d'événements et le pool
‫de threads, dans les deux prochaines vidéos.
‫Une chose importante à
‫noter ici est que libuv est en fait
‫entièrement écrit en C++ et non en JavaScript.
‫Et V8 lui-même utilise également du code C++ en plus de JavaScript.
‫Par conséquent, Node lui-même est un programme écrit en
‫C++ et JavaScript et pas seulement en JavaScript comme vous pouvez
‫vous y attendre, n'est-ce pas ?
‫Maintenant, la beauté de ceci est que Node. JS relie
‫toutes ces bibliothèques, qu'elles soient écrites
‫en C++ ou en JavaScript, et nous
‫donne ensuite aux développeurs l'accès à leurs fonctions en pur JavaScript.
‫Donc, cela nous fournit vraiment une
‫très belle couche d'abstraction afin de nous rendre la vie beaucoup
‫plus facile au lieu de devoir jouer avec le code C++.
‫Ce serait une expérience terrible, non?
‫Encore une fois, cette architecture nous permet d'écrire du
‫code JavaScript pur à 100
‫%, s'exécutant dans Node. JS et accède toujours
‫à des fonctions telles que la lecture
‫de fichiers, qui en coulisses sont
‫en réalité implémentées dans libuv ou d'autres bibliothèques du langage C++.
‫Et en parlant
‫d'autres bibliothèques, Node ne s'appuie pas seulement
‫sur V8 et libuv, mais aussi sur http-parser pour
‫analyser http, c-ares ou quelque chose comme ça pour certaines requêtes
‫DNS, OpenSSL pour keepography, et aussi zlib pour la compression.
‫Et ce ne sont pas si importants à comprendre, d'accord ?
‫Donc, à la fin, lorsque toutes ces pièces s'emboîtent
‫bien, nous nous retrouvons avec Node. JS prêt à être
‫utilisé côté serveur pour les quatre applications.
‫Et ensuite, vous en apprendrez plus sur les threads dans
‫Node et le pool de threads.
‫Alors restez à l'écoute pour celui-là.