﻿1
00:00:01,120 --> 00:00:03,120
‫Instructeur : Dans cette vidéo

2
00:00:03,120 --> 00:00:06,030
‫et la suivante, nous allons plonger dans un

3
00:00:06,030 --> 00:00:08,870
‫autre élément important de l'architecture Node JS avec

4
00:00:08,870 --> 00:00:11,093
‫les événements JS et l'architecture événementielle.

5
00:00:12,370 --> 00:00:15,210
‫Ainsi, la plupart des modules de base de

6
00:00:15,210 --> 00:00:19,780
‫Node, comme ceux que nous avons déjà utilisés, comme HTTP, File System et

7
00:00:19,780 --> 00:00:23,200
‫Timers, sont construits autour d'une architecture événementielle, et nous

8
00:00:23,200 --> 00:00:25,830
‫pouvons bien sûr également utiliser cette

9
00:00:25,830 --> 00:00:28,720
‫architecture à notre avantage dans notre propre code.

10
00:00:28,720 --> 00:00:31,910
‫Et le concept est en fait assez simple.

11
00:00:31,910 --> 00:00:34,780
‫Ainsi, dans Node, il existe certains objets appelés

12
00:00:34,780 --> 00:00:37,843
‫émetteurs d'événements qui émettent des événements nommés dès

13
00:00:37,843 --> 00:00:41,520
‫que quelque chose d'important se produit dans l'application, comme une

14
00:00:41,520 --> 00:00:45,360
‫requête atteignant le serveur, ou une minuterie expirant, ou un

15
00:00:45,360 --> 00:00:47,660
‫fichier se terminant à lire.

16
00:00:47,660 --> 00:00:51,030
‫Ces événements peuvent ensuite être récupérés par les écouteurs

17
00:00:51,030 --> 00:00:54,380
‫d'événements que nous, les développeurs, avons configurés, qui

18
00:00:54,380 --> 00:00:58,870
‫déclencheront les fonctions de rappel qui sont attachées à chaque écouteur, d'accord.

19
00:00:58,870 --> 00:01:02,150
‫Donc, encore une fois, d'une part, nous avons

20
00:01:02,150 --> 00:01:05,470
‫des émetteurs d'événements et, d'autre part, des écouteurs d'événements qui

21
00:01:05,470 --> 00:01:08,940
‫réagiront aux événements émis en appelant la fonction de rappel.

22
00:01:08,940 --> 00:01:10,540
‫Simple, non ?

23
00:01:10,540 --> 00:01:12,900
‫Et probablement la meilleure façon de comprendre cela

24
00:01:12,900 --> 00:01:14,630
‫est de regarder un exemple.

25
00:01:14,630 --> 00:01:17,760
‫Et donc, comprenons brièvement comment Node utilise

26
00:01:17,760 --> 00:01:21,330
‫l'architecture événementielle pour gérer les requêtes du serveur dans

27
00:01:21,330 --> 00:01:25,950
‫le module HTTP que nous avons déjà utilisé dans une autre section.

28
00:01:25,950 --> 00:01:28,600
‫Ainsi, lorsque nous voulons créer un serveur,

29
00:01:28,600 --> 00:01:30,384
‫nous utilisons la méthode

30
00:01:30,384 --> 00:01:33,900
‫Create Server et l'enregistrons dans une variable de serveur.

31
00:01:33,900 --> 00:01:36,260
‫Cette implémentation ici est un peu différente

32
00:01:36,260 --> 00:01:40,270
‫de ce que nous faisions auparavant, mais elle fonctionne exactement de la même manière.

33
00:01:40,270 --> 00:01:44,040
‫Quoi qu'il en soit, ce serveur. on method est la

34
00:01:44,040 --> 00:01:49,040
‫façon dont nous créons réellement un écouteur, et dans ce cas pour l'événement "request".

35
00:01:49,070 --> 00:01:51,390
‫Supposons donc que notre serveur

36
00:01:51,390 --> 00:01:53,770
‫fonctionne et qu'une nouvelle demande soit effectuée.

37
00:01:53,770 --> 00:01:57,410
‫Le serveur agit comme un émetteur et émettra automatiquement un

38
00:01:57,410 --> 00:02:01,220
‫événement appelé « requête » à chaque fois qu'une requête

39
00:02:01,220 --> 00:02:02,810
‫parvient au serveur.

40
00:02:02,810 --> 00:02:04,350
‫Simple, non ?

41
00:02:04,350 --> 00:02:07,100
‫Ensuite, puisque nous avons déjà un

42
00:02:07,100 --> 00:02:10,830
‫écouteur configuré pour cet événement précis, la fonction de rappel que

43
00:02:10,830 --> 00:02:14,000
‫nous avons attachée à cet écouteur sera automatiquement appelée.

44
00:02:14,000 --> 00:02:16,780
‫Et ce genre de fonction que nous

45
00:02:16,780 --> 00:02:20,040
‫connaissons déjà auparavant, il renverra simplement des données au client.

46
00:02:20,040 --> 00:02:22,970
‫Maintenant, cela fonctionne de cette façon car dans les

47
00:02:22,970 --> 00:02:26,074
‫coulisses, le serveur est en fait une instance de

48
00:02:26,074 --> 00:02:28,980
‫la classe Node JS EventEmitter, il hérite donc

49
00:02:28,980 --> 00:02:32,500
‫de toute cette logique d'émission et d'écoute d'événements de cette classe

50
00:02:32,500 --> 00:02:35,410
‫EventEmitter, et ne vous inquiétez pas, nous allons utiliser

51
00:02:35,410 --> 00:02:38,410
‫tout va bien dans la vidéo suivante, afin que

52
00:02:38,410 --> 00:02:41,210
‫vous vous familiarisiez avec toutes ces logiques.

53
00:02:41,210 --> 00:02:43,340
‫Maintenant, juste pour terminer cette conférence,

54
00:02:43,340 --> 00:02:46,800
‫je pense qu'il est important de mentionner que cette logique

55
00:02:46,800 --> 00:02:49,960
‫EventEmitter est appelée le modèle d'observateur dans la programmation

56
00:02:49,960 --> 00:02:53,160
‫Javascript en général, et c'est un modèle assez populaire avec

57
00:02:53,160 --> 00:02:54,740
‫de nombreux cas utilisés.

58
00:02:54,740 --> 00:02:57,090
‫Donc, l'idée est que j'y

59
00:02:57,090 --> 00:03:00,370
‫place un observateur, dans ce cas l'auditeur d'événement,

60
00:03:00,370 --> 00:03:03,450
‫qui continue d'attendre, continue d'observer le sujet qui

61
00:03:03,450 --> 00:03:06,486
‫finira par émettre l'événement que l'auditeur attend.

62
00:03:06,486 --> 00:03:09,680
‫Et le contraire de ce modèle est simplement des fonctions

63
00:03:09,680 --> 00:03:12,370
‫appelant d'autres fonctions, ce à quoi nous sommes plus

64
00:03:12,370 --> 00:03:14,530
‫habitués en fait, n'est-ce pas ?

65
00:03:14,530 --> 00:03:16,490
‫Mais le modèle d'observateur a

66
00:03:16,490 --> 00:03:19,020
‫été conçu pour réagir plutôt que pour appeler.

67
00:03:19,020 --> 00:03:22,330
‫Et c'est parce qu'il y a un énorme avantage

68
00:03:22,330 --> 00:03:25,248
‫à utiliser cette architecture, qui est le fait

69
00:03:25,248 --> 00:03:27,420
‫que tout est plus découplé.

70
00:03:27,420 --> 00:03:30,340
‫Nous n'avons pas, par exemple, de fonctions du

71
00:03:30,340 --> 00:03:33,610
‫module File System appelant des fonctions du module HTTP car

72
00:03:33,610 --> 00:03:35,770
‫ce serait un énorme gâchis.

73
00:03:35,770 --> 00:03:38,690
‫Au lieu de cela, ces modules sont bien

74
00:03:38,690 --> 00:03:41,470
‫découplés et autonomes, chacun émettant des événements

75
00:03:41,470 --> 00:03:44,380
‫auxquels d'autres fonctions, même s'ils proviennent d'autres

76
00:03:44,380 --> 00:03:46,120
‫modules, peuvent répondre.

77
00:03:46,120 --> 00:03:49,170
‫De plus, l'utilisation d'une architecture événementielle permet

78
00:03:49,170 --> 00:03:52,390
‫de réagir plus facilement plusieurs fois au

79
00:03:52,390 --> 00:03:53,760
‫même événement.

80
00:03:53,760 --> 00:03:58,210
‫Tout ce que nous avons à faire est de configurer plusieurs auditeurs, n'est-ce pas ?

81
00:03:58,210 --> 00:04:01,760
‫D'accord et c'est l'architecture événementielle de Node en

82
00:04:01,760 --> 00:04:03,020
‫un mot.

83
00:04:03,020 --> 00:04:06,050
‫Et ne vous inquiétez pas si cela vous semble un peu

84
00:04:06,050 --> 00:04:08,730
‫trop théorique, vous verrez cette logique être utilisée

85
00:04:08,730 --> 00:04:12,183
‫dans de nombreuses situations tout au long du cours, dès la prochaine vidéo.

