1
00:00:00,000 --> 00:00:04,740
[MUSICA]

2
00:00:04,740 --> 00:00:09,065
In questa lezione impareremo come possiamo scrivere notifiche semplici.

3
00:00:09,065 --> 00:00:11,454
Impareremo anche a conoscere i moduli Node e

4
00:00:11,454 --> 00:00:16,885
come i moduli Node ci permettono di organizzare le nostre applicazioni in più file.

5
00:00:16,885 --> 00:00:20,550
Saremo anche conoscere i diversi tipi di moduli nodo e

6
00:00:20,550 --> 00:00:26,450
come possiamo importare moduli nodo nei nostri file della nostra applicazione nodo e

7
00:00:26,450 --> 00:00:29,260
fare uso di loro all'interno della nostra applicazione.

8
00:00:29,260 --> 00:00:34,640
Per prima cosa, impariamo i moduli Node in un po 'più in dettaglio in questa lezione.

9
00:00:36,720 --> 00:00:39,320
JavaScript, quando è

10
00:00:39,320 --> 00:00:43,900
stato progettato per essere un linguaggio di scripting da utilizzare all'interno del browser.

11
00:00:43,900 --> 00:00:49,510
Quindi il piccolo regno all'interno del quale doveva essere usato è il browser.

12
00:00:49,510 --> 00:00:54,695
Ora, come capisci da questa specializzazione, JavaScript è andato

13
00:00:54,695 --> 00:01:00,822
ben oltre la sua intenzione originale, e ora viene utilizzato per scrivere applicazioni.

14
00:01:00,822 --> 00:01:04,688
Entrambi da eseguire utilizzando framework all'interno del browser, e

15
00:01:04,688 --> 00:01:09,880
anche per eseguire applicazioni sul lato server, come vedremo in questo corso.

16
00:01:11,020 --> 00:01:16,100
JavaScript originariamente non è mai stato progettato con alcuna libreria comune.

17
00:01:16,100 --> 00:01:20,907
Se si guardano linguaggi di programmazione standard come C, C ++, Java e così via,

18
00:01:20,907 --> 00:01:24,374
tutti hanno librerie standard che consentono di accedere

19
00:01:24,374 --> 00:01:26,730
all'hardware sottostante.

20
00:01:26,730 --> 00:01:32,170
E anche fornire un modo strutturato di organizzare l'applicazione in

21
00:01:32,170 --> 00:01:36,880
più file e quindi combinarli insieme quando si crea un'applicazione.

22
00:01:36,880 --> 00:01:41,580
JavaScript non ha mai avuto nessuno di questo supporto quando è iniziato.

23
00:01:41,580 --> 00:01:45,850
Perché, come abbiamo capito, JavaScript non è stato progettato

24
00:01:45,850 --> 00:01:48,330
per lo scopo per il quale viene utilizzato oggi.

25
00:01:49,420 --> 00:01:50,500
Ma, naturalmente,

26
00:01:50,500 --> 00:01:55,710
le persone hanno capito le difficoltà quando è necessario espandere JavaScript

27
00:01:55,710 --> 00:02:01,340
oltre un singolo file che viene utilizzato come linguaggio di scripting per il browser.

28
00:02:01,340 --> 00:02:04,750
Ora, se hai un'applicazione JavaScript molto grande,

29
00:02:04,750 --> 00:02:10,020
diventa ingombrante scrivere l'intero codice in un unico file.

30
00:02:10,020 --> 00:02:14,890
E ovviamente vuoi che i risultati siano in grado di suddividere la tua applicazione in

31
00:02:14,890 --> 00:02:16,830
più fatti.

32
00:02:16,830 --> 00:02:21,760
Ora, a differenza dei linguaggi di programmazione tradizionali, JavaScript non ha mai avuto un modo

33
00:02:21,760 --> 00:02:26,945
di distribuire il codice in più file e quindi combinarli insieme.

34
00:02:26,945 --> 00:02:32,095
Quindi è qui che è arrivata l'API CommonJS per

35
00:02:32,095 --> 00:02:35,859
colmare questa lacuna che riempie le esigenze di qualche applicazione comune.

36
00:02:35,859 --> 00:02:42,832
E questo formato CommonJS definisce un formato modulo che può essere utilizzato per

37
00:02:42,832 --> 00:02:47,282
suddividere l'applicazione JavaScript in più file.

38
00:02:47,282 --> 00:02:51,151
E Node adotta quel formato CommonJS per

39
00:02:51,151 --> 00:02:55,349
organizzare la nostra applicazione JavaScript in più file.

40
00:02:55,349 --> 00:02:59,861
E all'interno di JavaScript, con il formato CommonJS,

41
00:02:59,861 --> 00:03:03,891
ogni file diventa il proprio modulo Node.

42
00:03:03,891 --> 00:03:09,841
Quindi impariamo un po 'di più sui moduli Node nel resto di questa lezione.

43
00:03:09,841 --> 00:03:11,931
Quindi, come ho appena detto,

44
00:03:11,931 --> 00:03:16,280
ogni file in un'applicazione Node diventa il proprio modulo Node.

45
00:03:16,280 --> 00:03:22,290
Quindi il file o il file JavaScript definisce il limite per un modulo nodo.

46
00:03:22,290 --> 00:03:26,160
Quindi all'interno di quel file, la specifica CommonJS

47
00:03:26,160 --> 00:03:30,770
fornisce una variabile chiamata variabile del modulo che è un oggetto JavaScript.

48
00:03:30,770 --> 00:03:36,070
E questo ti dà accesso alla definizione corrente del modulo all'interno di un file.

49
00:03:36,070 --> 00:03:41,020
E su questo oggetto modulo, hai la

50
00:03:41,020 --> 00:03:45,120
proprietà module.exports che determina l'esportazione dal modulo corrente.

51
00:03:45,120 --> 00:03:49,010
Quindi, quando assegni qualcosa alla proprietà module.exports,

52
00:03:49,010 --> 00:03:54,100
diventa il valore esportato dal modulo corrente. In

53
00:03:54,100 --> 00:03:59,070
modo che quando questo modulo viene importato in un altro file

54
00:03:59,070 --> 00:04:03,130
della nostra applicazione Node, allora tutto ciò che viene esportato da questo modulo

55
00:04:03,130 --> 00:04:06,860
diventa disponibile nella seconda applicazione.

56
00:04:06,860 --> 00:04:09,330
Vedremo un esempio in breve tempo.

57
00:04:09,330 --> 00:04:13,080
Quando è necessario importare un modulo in un altro modulo,

58
00:04:13,080 --> 00:04:17,700
questo è dove la funzione require viene utilizzata per importare il modulo.

59
00:04:17,700 --> 00:04:23,220
Così come noteremo in breve tempo, la funzione require viene utilizzata

60
00:04:23,220 --> 00:04:28,800
per importare un modulo nodo che è definito in altro file nel file corrente in modo

61
00:04:28,800 --> 00:04:32,790
che possa essere utilizzato all'interno della nostra applicazione nodo.

62
00:04:33,800 --> 00:04:36,750
I moduli nodo possono essere di tre categorie.

63
00:04:36,750 --> 00:04:41,842
Abbiamo moduli nodo basato su file in cui definiamo il modulo nodo all'interno di un file,

64
00:04:41,842 --> 00:04:46,270
all'interno della nostra applicazione e facciamo uso di esso all'interno della nostra applicazione.

65
00:04:46,270 --> 00:04:51,100
Poi, abbiamo moduli di base che sono già parte del nodo.

66
00:04:51,100 --> 00:04:55,610
I progettisti del nodo hanno mantenuto questi moduli di base intenzionalmente piccoli in modo

67
00:04:55,610 --> 00:04:57,970
che il nodo può essere mantenuto piccolo.

68
00:04:57,970 --> 00:05:01,060
Inoltre forniscono funzionalità sufficienti

69
00:05:01,060 --> 00:05:05,310
in modo che i progettisti di moduli esterni possano aggiungere

70
00:05:05,310 --> 00:05:10,320
funzionalità proprie che possono essere sfruttate quando abbiamo sviluppato applicazioni Node.

71
00:05:10,320 --> 00:05:18,580
Quindi i moduli principali includono percorso, file system, os, util e alcuni altri.

72
00:05:18,580 --> 00:05:22,670
Incontreremo alcuni di loro mentre andiamo avanti in questo corso.

73
00:05:22,670 --> 00:05:25,010
Poi abbiamo moduli Nodo esterni.

74
00:05:25,010 --> 00:05:29,650
Si tratta di moduli Nodo di terze parti che vengono sviluppati dagli sviluppatori Node e

75
00:05:29,650 --> 00:05:33,210
quindi resi disponibili tramite l'ecosistema Node.

76
00:05:33,210 --> 00:05:40,586
Quindi questi moduli Nodo esterni possono essere installati all'interno del nostro sistema utilizzando NPM.

77
00:05:40,586 --> 00:05:45,363
Tante volte ci vedresti usando NPM install e

78
00:05:45,363 --> 00:05:50,937
il nome del modulo Node e che sarà incluso all'interno della

79
00:05:50,937 --> 00:05:57,010
nostra applicazione Node in una cartella denominata node_modules cartella.

80
00:05:57,010 --> 00:06:05,000
E incontreremo moduli Nodo esterni in una lezione successiva di questo corso.

81
00:06:05,000 --> 00:06:07,630
Come facciamo a utilizzare i moduli Node?

82
00:06:07,630 --> 00:06:13,720
Quando è necessario utilizzare un modulo nodo all'interno di un altro file nodo all'interno dell'applicazione,

83
00:06:13,720 --> 00:06:16,960
è necessario utilizzare la funzione require.

84
00:06:16,960 --> 00:06:21,180
Ho brevemente menzionato la funzione require in una delle

85
00:06:21,180 --> 00:06:22,440
diapositive precedenti lì.

86
00:06:22,440 --> 00:06:26,420
La funzione require per i moduli nodo basati su file,

87
00:06:26,420 --> 00:06:29,073
si specifica questo come richiedono e

88
00:06:29,073 --> 00:06:33,955
quindi specificare il percorso del file che contiene il modulo nodo.

89
00:06:33,955 --> 00:06:39,560
Quindi diresti require./, il nome del modulo se il file esiste

90
00:06:39,560 --> 00:06:45,590
nella cartella corrente scritta quale esiste la tua applicazione Node.

91
00:06:45,590 --> 00:06:51,060
Quindi questo specifica il percorso relativo al file dalla posizione corrente.

92
00:06:51,060 --> 00:06:54,247
E anche per i moduli core ed esterni,

93
00:06:54,247 --> 00:07:00,260
normalmente li specificheresti dicendo require e il nome del modulo.

94
00:07:00,260 --> 00:07:03,090
È necessario specificare esplicitamente un percorso per esso.

95
00:07:03,090 --> 00:07:06,200
Se è un modulo di base, è già parte di Node e

96
00:07:06,200 --> 00:07:08,120
quindi verrà automaticamente incluso.

97
00:07:08,120 --> 00:07:13,365
Se si tratta di un modulo esterno, verrà installato sia all'interno

98
00:07:13,365 --> 00:07:18,978
della cartella node_modules nella cartella corrente, o se il nodo non

99
00:07:18,978 --> 00:07:25,327
trova il modulo esterno all'interno della cartella node_modules nella cartella corrente,

100
00:07:25,327 --> 00:07:31,058
andrà fino alla successiva cartella di livello superiore alla ricerca di quel modulo Node.

101
00:07:31,058 --> 00:07:33,989
Oppure la successiva cartella di livello superiore e

102
00:07:33,989 --> 00:07:39,143
la gerarchia fino a quando non individua i moduli Node che verranno

103
00:07:39,143 --> 00:07:44,390
quindi importati per essere utilizzati all'interno dell'applicazione Node.

104
00:07:44,390 --> 00:07:48,040
Se non è in grado di trovare il modulo Node nella gerarchia,

105
00:07:48,040 --> 00:07:52,640
allora genererà ovviamente un errore che dice che manca il modulo Node.

106
00:07:52,640 --> 00:07:57,690
Questo modo di organizzare è molto utile nel modo in cui

107
00:07:57,690 --> 00:08:03,220
la struttura dell'applicazione Node è definita come ci incontreremo di

108
00:08:04,840 --> 00:08:08,460
più nella parte successiva di questo corso.

109
00:08:08,460 --> 00:08:13,530
Con questa rapida introduzione ai moduli Node, diamo un'occhiata a un esempio

110
00:08:13,530 --> 00:08:19,150
che faremo come parte dell'esercizio che segue questa lezione.

111
00:08:19,150 --> 00:08:23,210
Come abbiamo imparato in questa lezione, il

112
00:08:23,210 --> 00:08:28,040
limite di un modulo nodo è definito dal file che contiene il codice qui.

113
00:08:28,040 --> 00:08:34,060
Quindi qui, ho un esempio di un modulo Node definito come rectangle.js.

114
00:08:34,060 --> 00:08:38,113
E lì dentro puoi vedere che sto usando due esportazioni qui,

115
00:08:38,113 --> 00:08:42,096
sto dicendo exports.perimeter e exports.area.

116
00:08:42,096 --> 00:08:47,401
E vedrai che qui non sto usando module.exports perché le

117
00:08:47,401 --> 00:08:52,740
esportazioni stesse sono anche una versione abbreviata di module.exports.

118
00:08:52,740 --> 00:08:57,057
Quindi, se non si desidera utilizzare completamente module.exports

119
00:08:57,057 --> 00:09:01,804
ma si desidera solo esportare, allora questo è un altro modo di scrivere

120
00:09:01,804 --> 00:09:06,316
quegli elementi che vengono esportati dai moduli nodo correnti.

121
00:09:06,316 --> 00:09:09,875
Quindi qui stiamo esportando due funzioni, il perimetro e

122
00:09:09,875 --> 00:09:12,750
l'area dal modulo nodo rettangolo.

123
00:09:12,750 --> 00:09:17,679
Ora per fare uso di questo modulo in un altro file

124
00:09:17,679 --> 00:09:21,870
, diamo un'occhiata al file index.js.

125
00:09:21,870 --> 00:09:27,240
E la prima riga in questo file noterai che dice

126
00:09:27,240 --> 00:09:32,220
var rect = require e tra virgolette,. /rettangolo.

127
00:09:32,220 --> 00:09:36,650
Quindi questo sta specificando che il modulo rettangolo sarà importante qui,

128
00:09:36,650 --> 00:09:42,090
ho fatto uso di all'interno di questo particolare file dell'applicazione.

129
00:09:42,090 --> 00:09:45,670
Quindi questo è il modo in cui definiremmo i moduli nodo, e

130
00:09:45,670 --> 00:09:50,080
questo è un esempio di un modulo nodo basato su file.

131
00:09:50,080 --> 00:09:52,197
Incontreremo il nucleo e

132
00:09:52,197 --> 00:09:56,438
i moduli Nodo esterni nelle lezioni successive di questo corso.

133
00:09:56,438 --> 00:10:02,669
[ MUSIC]