﻿1
00:00:01,170 --> 00:00:02,830
‫Instructeur : Maintenant, afin de

2
00:00:02,830 --> 00:00:04,710
‫préparer le terrain pour les deux

3
00:00:04,710 --> 00:00:08,083
‫prochaines conférences, commençons par en apprendre un peu plus sur l'architecture Node.

4
00:00:09,430 --> 00:00:11,980
‫Représentons donc cette architecture ici en

5
00:00:11,980 --> 00:00:14,610
‫termes de dépendances de Node, qui

6
00:00:14,610 --> 00:00:16,620
‫ne sont que

7
00:00:16,620 --> 00:00:20,300
‫quelques bibliothèques dont dépend Node pour fonctionner correctement.

8
00:00:20,300 --> 00:00:23,320
‫Ainsi, le temps d'exécution de Node a

9
00:00:23,320 --> 00:00:25,010
‫plusieurs dépendances, et

10
00:00:25,010 --> 00:00:29,030
‫les plus importantes sont le moteur V8 (marmonne) et libuv.

11
00:00:29,030 --> 00:00:32,800
‫Maintenant, nous avons dit avant que Node est un environnement d'exécution JavaScript basé

12
00:00:32,800 --> 00:00:35,570
‫sur le moteur V8 de Google, n'est-ce pas ?

13
00:00:35,570 --> 00:00:39,140
‫Et donc, c'est pourquoi il apparaît ici comme une dépendance.

14
00:00:39,140 --> 00:00:42,620
‫Sans la V8, Node n'aurait absolument aucun moyen de

15
00:00:42,620 --> 00:00:45,980
‫comprendre le code JavaScript que nous écrivons.

16
00:00:45,980 --> 00:00:48,770
‫Et par conséquent, le V8 est un

17
00:00:48,770 --> 00:00:50,880
‫élément fondamental de l'architecture Node.

18
00:00:50,880 --> 00:00:55,450
‫Encore une fois, le moteur V8 est ce qui convertit le code

19
00:00:55,450 --> 00:00:59,470
‫JavaScript en code machine qu'un ordinateur peut réellement comprendre.

20
00:00:59,470 --> 00:01:03,370
‫D'accord, mais cela seul ne suffit pas pour créer un framework

21
00:01:03,370 --> 00:01:05,380
‫côté serveur complet comme Node.

22
00:01:05,380 --> 00:01:09,100
‫Et c'est pourquoi nous avons également libuv dans Node.

23
00:01:09,100 --> 00:01:12,380
‫Et libuv est une bibliothèque open source fortement

24
00:01:12,380 --> 00:01:15,060
‫axée sur les E/S asynchrones.

25
00:01:15,060 --> 00:01:16,860
‫Donc, entrée sortie.

26
00:01:16,860 --> 00:01:19,500
‫Cette couche est ce qui donne à Node

27
00:01:19,500 --> 00:01:21,790
‫l'accès au système d'exploitation de l'ordinateur

28
00:01:21,790 --> 00:01:25,240
‫sous-jacent, au système de fichiers, à la mise en réseau, etc.

29
00:01:25,240 --> 00:01:28,440
‫En plus de cela, libuv implémente également deux fonctionnalités extrêmement

30
00:01:28,440 --> 00:01:30,540
‫importantes de Node. JS qui

31
00:01:30,540 --> 00:01:34,010
‫sont la boucle d'événement et aussi le pool de threads.

32
00:01:34,010 --> 00:01:37,130
‫Et en termes simples, la boucle d'événements est responsable de

33
00:01:37,130 --> 00:01:40,430
‫la gestion de tâches simples telles que l'exécution de rappels et

34
00:01:40,430 --> 00:01:44,790
‫d'E/S réseau, tandis que le pool de threads est destiné à des travaux plus lourds

35
00:01:44,790 --> 00:01:48,200
‫comme l'accès aux fichiers ou la compression ou quelque chose comme ça.

36
00:01:48,200 --> 00:01:50,120
‫Mais vous apprendrez tout à ce

37
00:01:50,120 --> 00:01:52,430
‫sujet, donc sur la boucle d'événements et le pool

38
00:01:52,430 --> 00:01:54,430
‫de threads, dans les deux prochaines vidéos.

39
00:01:54,430 --> 00:01:56,080
‫Une chose importante à

40
00:01:56,080 --> 00:01:59,010
‫noter ici est que libuv est en fait

41
00:01:59,010 --> 00:02:01,840
‫entièrement écrit en C++ et non en JavaScript.

42
00:02:01,840 --> 00:02:06,840
‫Et V8 lui-même utilise également du code C++ en plus de JavaScript.

43
00:02:06,950 --> 00:02:10,150
‫Par conséquent, Node lui-même est un programme écrit en

44
00:02:10,150 --> 00:02:14,170
‫C++ et JavaScript et pas seulement en JavaScript comme vous pouvez

45
00:02:14,170 --> 00:02:16,530
‫vous y attendre, n'est-ce pas ?

46
00:02:16,530 --> 00:02:19,660
‫Maintenant, la beauté de ceci est que Node. JS relie

47
00:02:19,660 --> 00:02:22,310
‫toutes ces bibliothèques, qu'elles soient écrites

48
00:02:22,310 --> 00:02:25,640
‫en C++ ou en JavaScript, et nous

49
00:02:25,640 --> 00:02:30,380
‫donne ensuite aux développeurs l'accès à leurs fonctions en pur JavaScript.

50
00:02:30,380 --> 00:02:33,090
‫Donc, cela nous fournit vraiment une

51
00:02:33,090 --> 00:02:37,290
‫très belle couche d'abstraction afin de nous rendre la vie beaucoup

52
00:02:37,290 --> 00:02:41,200
‫plus facile au lieu de devoir jouer avec le code C++.

53
00:02:41,200 --> 00:02:43,970
‫Ce serait une expérience terrible, non?

54
00:02:43,970 --> 00:02:47,450
‫Encore une fois, cette architecture nous permet d'écrire du

55
00:02:47,450 --> 00:02:49,490
‫code JavaScript pur à 100

56
00:02:49,490 --> 00:02:52,960
‫%, s'exécutant dans Node. JS et accède toujours

57
00:02:52,960 --> 00:02:55,490
‫à des fonctions telles que la lecture

58
00:02:55,490 --> 00:02:57,650
‫de fichiers, qui en coulisses sont

59
00:02:57,650 --> 00:03:01,290
‫en réalité implémentées dans libuv ou d'autres bibliothèques du langage C++.

60
00:03:01,290 --> 00:03:03,090
‫Et en parlant

61
00:03:03,090 --> 00:03:06,750
‫d'autres bibliothèques, Node ne s'appuie pas seulement

62
00:03:06,750 --> 00:03:10,920
‫sur V8 et libuv, mais aussi sur http-parser pour

63
00:03:10,920 --> 00:03:15,920
‫analyser http, c-ares ou quelque chose comme ça pour certaines requêtes

64
00:03:16,420 --> 00:03:21,420
‫DNS, OpenSSL pour keepography, et aussi zlib pour la compression.

65
00:03:21,490 --> 00:03:24,740
‫Et ce ne sont pas si importants à comprendre, d'accord ?

66
00:03:24,740 --> 00:03:27,830
‫Donc, à la fin, lorsque toutes ces pièces s'emboîtent

67
00:03:27,830 --> 00:03:32,030
‫bien, nous nous retrouvons avec Node. JS prêt à être

68
00:03:32,030 --> 00:03:35,000
‫utilisé côté serveur pour les quatre applications.

69
00:03:35,000 --> 00:03:37,670
‫Et ensuite, vous en apprendrez plus sur les threads dans

70
00:03:37,670 --> 00:03:39,600
‫Node et le pool de threads.

71
00:03:39,600 --> 00:03:41,663
‫Alors restez à l'écoute pour celui-là.

