1
00:00:03,650 --> 00:00:06,464
Nelle lezioni precedenti,

2
00:00:06,464 --> 00:00:08,580
abbiamo imparato a conoscere Node.

3
00:00:08,580 --> 00:00:13,215
Abbiamo anche visto come Node può essere utilizzato per impostare un server Web.

4
00:00:13,215 --> 00:00:20,460
Ora i progettisti del nodo hanno intenzionalmente mantenuto il nodo piccolo con un piccolo numero di

5
00:00:20,460 --> 00:00:24,480
moduli di codice in modo che possano lasciare

6
00:00:24,480 --> 00:00:29,730
agli sviluppatori di terze parti di trovare soluzioni innovative ai problemi.

7
00:00:29,730 --> 00:00:37,590
Quindi, una volta rilasciato Node, un certo numero di sviluppatori di terze parti ha iniziato a progettare

8
00:00:37,590 --> 00:00:45,875
e rilasciare interessanti moduli di terze parti che possono essere eseguiti sulla piattaforma Node.

9
00:00:45,875 --> 00:00:50,030
Ora avete visto un certo numero di moduli Node che potrebbero essere

10
00:00:50,030 --> 00:00:54,185
utilizzati per lo sviluppo front-end nei corsi precedenti.

11
00:00:54,185 --> 00:00:59,240
Ora in questo corso stiamo esaminando lo sviluppo lato server e sul lato server,

12
00:00:59,240 --> 00:01:03,020
uno dei più popolari moduli Nodo di terze parti o

13
00:01:03,020 --> 00:01:08,720
framework per la costruzione di server HTTP è Express.

14
00:01:08,720 --> 00:01:11,480
Diamo un'occhiata ad alcuni dettagli di Express in

15
00:01:11,480 --> 00:01:14,345
questa lezione e poi faremo uso di Express per

16
00:01:14,345 --> 00:01:21,725
costruire un server che serve l'API REST per tutto il resto di questo corso.

17
00:01:21,725 --> 00:01:25,670
Innanzitutto, cos'è Express?

18
00:01:25,670 --> 00:01:30,355
Express è un

19
00:01:30,355 --> 00:01:37,519
framework veloce, inopinionato e minimalista che funziona su Node.js e supporta lo sviluppo Web.

20
00:01:37,519 --> 00:01:42,570
Questa è la definizione che ho preso in prestito da expressjs.com,

21
00:01:42,570 --> 00:01:48,025
il sito in cui Express relativa documentazione è disponibile per noi.

22
00:01:48,025 --> 00:01:53,769
Ora Express consente di sviluppare un'applicazione Web,

23
00:01:53,769 --> 00:02:02,385
applicazione lato server che servirà i contenuti per il consumo da parte del nostro front-end.

24
00:02:02,385 --> 00:02:07,730
Express fornisce un solido insieme di funzionalità che esploreremo

25
00:02:07,730 --> 00:02:13,610
più dettagliatamente attraverso il resto delle lezioni di questo corso.

26
00:02:13,610 --> 00:02:17,425
Esprimere se stesso come ho detto è un framework minimalista,

27
00:02:17,425 --> 00:02:21,020
e Express fornisce anche un modo per estendere e aggiungere

28
00:02:21,020 --> 00:02:25,465
funzionalità a Express tramite middleware di terze parti.

29
00:02:25,465 --> 00:02:31,830
Ciò estende la funzionalità di Express e aggiunge altre funzionalità come richiesto.

30
00:02:31,830 --> 00:02:38,750
Pertanto, è possibile creare il server Web utilizzando altrettanti middleware di terze parti

31
00:02:38,750 --> 00:02:46,070
necessari per soddisfare le esigenze del server Web che si sta progettando.

32
00:02:46,070 --> 00:02:52,130
Vedremo alcuni esempi di middleware di terze parti in questa lezione e ne

33
00:02:52,130 --> 00:02:58,170
esploreremo anche altri mentre affronteremo il resto delle lezioni di questo corso.

34
00:02:58,170 --> 00:03:01,520
Per utilizzare Express nel tuo progetto, ovviamente,

35
00:03:01,520 --> 00:03:05,730
il primo passo è installare Express e poiché Express è un modulo Node,

36
00:03:05,730 --> 00:03:10,940
lo installiamo dicendo npm install express —save

37
00:03:10,940 --> 00:03:17,145
e questo installerebbe Express nel tuo progetto locale.

38
00:03:17,145 --> 00:03:21,865
Vedremo l'uso di questo nell'esercizio che segue questa lezione.

39
00:03:21,865 --> 00:03:25,670
Parliamo brevemente del middleware Express.

40
00:03:25,670 --> 00:03:28,425
Quindi qual è esattamente lo scopo del middleware?

41
00:03:28,425 --> 00:03:32,510
Il middleware che Express supporta fornisce un sacco di

42
00:03:32,510 --> 00:03:38,370
funzionalità plug-in che sarebbe usato

43
00:03:38,370 --> 00:03:41,165
per migliorare la vostra applicazione Express, funzionalità plug-in come ad esempio vedremo

44
00:03:41,165 --> 00:03:45,500
un middleware chiamato Morgan che consente di

45
00:03:45,500 --> 00:03:52,490
stampare le informazioni di registro sullo schermo del richieste che entrano nel tuo server.

46
00:03:52,490 --> 00:03:56,494
Allo stesso modo, esamineremo un altro middleware chiamato BodyParser,

47
00:03:56,494 --> 00:03:59,090
che consente di analizzare il corpo del

48
00:03:59,090 --> 00:04:02,375
messaggio di richiesta HTTP in arrivo ed estrarre

49
00:04:02,375 --> 00:04:06,450
le informazioni da esso per l'uso all'interno dell'applicazione Express.

50
00:04:06,450 --> 00:04:11,395
Vedremo l'uso di questi nell'esercizio che segue.

51
00:04:11,395 --> 00:04:18,455
Come ho detto, Morgan esegue la registrazione delle informazioni sulla console sul lato server,

52
00:04:18,455 --> 00:04:21,645
informazioni sulle richieste in arrivo.

53
00:04:21,645 --> 00:04:28,145
Allo stesso modo, possono servire risorse Web statiche dal nostro server usando la

54
00:04:28,145 --> 00:04:35,855
statica Express, quindi questo servirà informazioni da una cartella all'interno del nostro progetto Express,

55
00:04:35,855 --> 00:04:39,785
e nel dichiarare il progetto puoi dire che sono il nome del

56
00:04:39,785 --> 00:04:44,690
file doppio sottolineatura e il nome della directory di sottolineatura doppio o dirname che

57
00:04:44,690 --> 00:04:48,410
ti dà il percorso completo per il file o la directory per

58
00:04:48,410 --> 00:04:53,535
il modulo corrente e mi vedrai usare quello nell'esercizio.

59
00:04:53,535 --> 00:04:55,640
Ora che abbiamo capito un po 'su

60
00:04:55,640 --> 00:04:58,695
Express e il middleware che Express utilizza,

61
00:04:58,695 --> 00:05:02,930
diamo un'occhiata a un modulo Node

62
00:05:02,930 --> 00:05:06,499
perché questa è la prima volta che stiamo incontrando un modulo Node di terze parti,

63
00:05:06,499 --> 00:05:10,460
vedremo alcuni dettagli sui moduli Node di terze parti quindi se esamineremo il

64
00:05:10,460 --> 00:05:15,000
package.json per vedere cosa è contenuto nel file package.json,

65
00:05:15,000 --> 00:05:17,920
vedremo anche il controllo semantico delle versioni.

66
00:05:17,920 --> 00:05:22,550
Quindi, quando si specifica la versione del pacchetto che si utilizza,

67
00:05:22,550 --> 00:05:31,745
si specifica sempre la versione specificando la versione principale.La patch.

68
00:05:31,745 --> 00:05:35,685
Quindi, quando si installa un pacchetto,

69
00:05:35,685 --> 00:05:39,230
è sempre identificato da questi tre numeri,

70
00:05:39,230 --> 00:05:45,440
versione principale che potrebbe introdurre cambiamenti di rottura, il che significa che se si

71
00:05:45,440 --> 00:05:48,560
sta installando una versione più recente del pacchetto potrebbe non essere

72
00:05:48,560 --> 00:05:51,920
completamente compatibile con le versioni precedenti.

73
00:05:51,920 --> 00:05:55,370
Potrebbe introdurre cambiamenti di interruzione per cui potrebbe essere necessario tornare indietro e correggere

74
00:05:55,370 --> 00:05:59,905
il codice che potresti aver scritto nella versione precedente del tuo progetto.

75
00:05:59,905 --> 00:06:01,790
La versione secondaria introduce

76
00:06:01,790 --> 00:06:06,385
alcune modifiche minori al pacchetto e potrebbe non interrompere le modifiche.

77
00:06:06,385 --> 00:06:14,800
Una patch sarebbe una correzione di bug che viene spesso emessa, quindi viene scoperto un piccolo bug.

78
00:06:14,800 --> 00:06:21,005
Quindi le patch di solito non portano a modifiche di interruzione e quindi puoi facilmente usare

79
00:06:21,005 --> 00:06:24,395
una versione superiore o una versione patch superiore di

80
00:06:24,395 --> 00:06:30,215
un particolare pacchetto che stai usando all'interno dell'applicazione Node.

81
00:06:30,215 --> 00:06:33,410
Quando si installa un pacchetto è possibile specificare

82
00:06:33,410 --> 00:06:38,465
la versione esatta del pacchetto da installare dicendo npm install,

83
00:06:38,465 --> 00:06:40,460
ad esempio se si desidera installare la

84
00:06:40,460 --> 00:06:44,630
versione 4.0.0 di Express si può dire express @4 .0.0.

85
00:06:44,630 --> 00:06:51,635
Quindi stai specificando esplicitamente quale versione del pacchetto installare.

86
00:06:51,635 --> 00:06:55,630
Se stai bene con una versione di patch di livello superiore,

87
00:06:55,630 --> 00:07:02,590
diresti npm install express@"~4.0.0 Se

88
00:07:02,590 --> 00:07:07,190
una versione secondaria superiore di un pacchetto è

89
00:07:07,190 --> 00:07:13,125
accettabile, allora diresti @ e il nome del pacchetto.

90
00:07:13,125 --> 00:07:17,210
Ora questo tipo di informazioni viene salvato anche nel file package.json,

91
00:07:17,210 --> 00:07:20,070
faremo rapidamente una visita al pacchetto di file json

92
00:07:20,070 --> 00:07:23,750
dove noterete alcune di queste informazioni in fase di salvataggio.

93
00:07:23,750 --> 00:07:27,575
Ora, quando fai l'esercizio che segue questa lezione,

94
00:07:27,575 --> 00:07:31,845
vedrai questo nel file package.json.

95
00:07:31,845 --> 00:07:38,325
Questo sarà il risultato del completamento dell'esercizio che segue questa lezione.

96
00:07:38,325 --> 00:07:43,230
Nell' esercizio costruiremo un semplice server Web utilizzando Express.

97
00:07:43,230 --> 00:07:46,570
Ora lascia che ti porti attraverso un rapido tour di package.json

98
00:07:46,570 --> 00:07:50,470
per illustrare alcune informazioni in package.json.

99
00:07:50,470 --> 00:07:56,530
Quindi nel file package.json noterai queste informazioni qui,

100
00:07:56,530 --> 00:08:00,525
questa proprietà per il nostro json che è memorizzata qui chiamata Dipendenze.

101
00:08:00,525 --> 00:08:04,250
Le dipendenze è dove specificherai

102
00:08:04,250 --> 00:08:07,400
quali moduli di terze parti aggiuntivi da

103
00:08:07,400 --> 00:08:10,700
cui dipende questo particolare progetto Node,

104
00:08:10,700 --> 00:08:15,230
quindi come puoi vedere qui stiamo dicendo che questo progetto dipende da Express

105
00:08:15,230 --> 00:08:20,540
e Morgan e nota in particolare come queste informazioni sono specificate Qui.

106
00:08:20,540 --> 00:08:25,715
Quindi questo è ^4.16.3 il che significa che

107
00:08:25,715 --> 00:08:31,380
funzionerà con qualsiasi versione che è 4.16.3 o superiore.

108
00:08:31,380 --> 00:08:35,725
È possibile utilizzare una versione minore di livello superiore e questo progetto sarà ancora a

109
00:08:35,725 --> 00:08:40,970
posto con esso e allo stesso modo per Morgan abbiamo specificato le informazioni qui.

110
00:08:40,970 --> 00:08:47,345
Quindi queste informazioni aggiuntive vengono aggiunte nel file package.json ogni volta che si esegue

111
00:08:47,345 --> 00:08:55,035
l'installazione di npm e si dice —save flag per l'installazione di npm.

112
00:08:55,035 --> 00:09:02,040
Ora, noterai anche che ho creato un file.gitignore qui e all'interno

113
00:09:02,040 --> 00:09:09,770
del file.gitignore ho specificato che git dovrebbe ignorare la cartella dei moduli Node.

114
00:09:09,770 --> 00:09:13,275
Quindi cosa è contenuto esattamente nella cartella dei moduli del nodo?

115
00:09:13,275 --> 00:09:20,704
Se si installano moduli di terze parti nell'applicazione Node,

116
00:09:20,704 --> 00:09:26,270
tutti questi moduli di terze parti verranno salvati nella cartella dei moduli Node qui,

117
00:09:26,270 --> 00:09:31,420
quindi all'interno del progetto vedrete che la cartella dei moduli Node è stata creata qui.

118
00:09:31,420 --> 00:09:34,550
E dando un'occhiata alla cartella dei moduli del nodo vedrai

119
00:09:34,550 --> 00:09:38,495
un sacco di pacchetti che sono stati installati.

120
00:09:38,495 --> 00:09:40,490
Ora tutti questi sono stati installati perché si

121
00:09:40,490 --> 00:09:43,250
installa Express ed Express a sua volta dipende da

122
00:09:43,250 --> 00:09:50,550
alcuni altri pacchetti che sono necessari in modo che anche quelli vengono installati qui per impostazione predefinita.

123
00:09:50,550 --> 00:09:55,850
In particolare, permettimi di attirare la tua attenzione sul pacchetto Express qui,

124
00:09:55,850 --> 00:09:59,045
quindi se vai nel pacchetto Express vedrai

125
00:09:59,045 --> 00:10:02,470
informazioni aggiuntive memorizzate nel pacchetto Express,

126
00:10:02,470 --> 00:10:06,435
quindi la prospettiva dell'indice anche poiché Express stesso è

127
00:10:06,435 --> 00:10:10,924
un modulo Node vedrai un

128
00:10:10,924 --> 00:10:14,015
file package.json all'interno di Express anche che contiene

129
00:10:14,015 --> 00:10:19,865
informazioni aggiuntive che ovviamente sono molto dettagliate lì,

130
00:10:19,865 --> 00:10:25,280
difficile per noi da capire, ma nota in particolare

131
00:10:25,280 --> 00:10:31,330
che Express stesso dipende da molti altri moduli Node qui.

132
00:10:31,330 --> 00:10:34,820
E questo è il motivo per cui tutti questi altri moduli Node

133
00:10:34,820 --> 00:10:38,250
sono stati installati anche nella cartella dei moduli Node.

134
00:10:38,250 --> 00:10:40,160
Quindi, quando installi Express,

135
00:10:40,160 --> 00:10:45,020
questo attiverà immediatamente anche tutte le sue dipendenze da installare perché

136
00:10:45,020 --> 00:10:50,980
Express richiederà questi altri moduli Node per farlo fare il suo lavoro.

137
00:10:50,980 --> 00:10:54,590
Inoltre, all'interno di Express vedrai anche il file index.js.

138
00:10:54,590 --> 00:11:00,125
Quindi questo è il punto di partenza per il nostro modulo Express Node stesso e

139
00:11:00,125 --> 00:11:05,690
nota in particolare che il file index.js dice semplicemente module.exports richiedono lib express.

140
00:11:05,690 --> 00:11:12,645
Quindi il codice effettivo per il modulo Express stesso è all'interno di questo progetto

141
00:11:12,645 --> 00:11:16,225
lib, cartella lib qui e puoi vedere i dettagli.

142
00:11:16,225 --> 00:11:20,900
Quindi, se siete curiosi di vedere i dettagli di Express stesso si può andare a guardare

143
00:11:20,900 --> 00:11:25,560
lì dentro, ma ancora una volta questo potrebbe essere un po 'troppo per voi in questo momento.

144
00:11:25,560 --> 00:11:31,815
Per il momento basta accettare il fatto che Express farà il suo lavoro come previsto.

145
00:11:31,815 --> 00:11:38,450
Ma ho pensato che sarebbe stata un'esperienza interessante visitare la cartella del modulo Node

146
00:11:38,450 --> 00:11:45,435
per esaminare una struttura di un particolare modulo Node di terze parti in modo un po 'più dettagliato.

147
00:11:45,435 --> 00:11:48,530
Inoltre, noterai che c'è un altro file

148
00:11:48,530 --> 00:11:52,010
qui chiamato package-lock.json che è installato.

149
00:11:52,010 --> 00:11:56,690
Ora questo viene installato dalle versioni più recenti di npm.

150
00:11:56,690 --> 00:12:01,190
Il file package-lock.json viene generato automaticamente da

151
00:12:01,190 --> 00:12:06,259
npm che memorizza

152
00:12:06,259 --> 00:12:10,265
le informazioni sull'albero esatto che è stato generato quando si installano

153
00:12:10,265 --> 00:12:14,630
altri moduli Node e questo è molto utile quando è

154
00:12:14,630 --> 00:12:22,660
necessario eseguire l'installazione dei moduli Node in un'altra posizione.

155
00:12:22,660 --> 00:12:27,620
Ad esempio, se scarichi un repository Git e

156
00:12:27,620 --> 00:12:32,865
provi a ricreare questo progetto su un altro computer,

157
00:12:32,865 --> 00:12:35,930
digiti semplicemente npm install sul prompt e

158
00:12:35,930 --> 00:12:39,050
chiederà all'applicazione Node di

159
00:12:39,050 --> 00:12:45,810
installare automaticamente tutto ciò che è specificato nelle dipendenze qui per te.

160
00:12:45,810 --> 00:12:53,335
Durante la creazione che il package-lock.json memorizza informazioni aggiuntive che vengono utilizzate da

161
00:12:53,335 --> 00:13:01,805
npm per eseguire la corretta installazione di tutti i moduli npm necessari.

162
00:13:01,805 --> 00:13:05,090
Ora per il momento non è necessario preoccuparsi dei dettagli di

163
00:13:05,090 --> 00:13:08,290
ciò che c'è all'interno del file package-lock.json.

164
00:13:08,290 --> 00:13:15,550
Con questo, completiamo questa lezione dove abbiamo esaminato alcuni dettagli su Express.