﻿1
00:00:01,270 --> 00:00:04,520
‫Narratore: Ora, prima di immergerci nel codice NodeJS, facciamo

2
00:00:04,520 --> 00:00:06,700
‫una panoramica di alto livello

3
00:00:06,700 --> 00:00:08,990
‫su cosa sia effettivamente NodeJS, per

4
00:00:08,990 --> 00:00:11,800
‫cosa lo usiamo e perché utilizziamo Node

5
00:00:11,800 --> 00:00:13,843
‫invece di altre tecnologie.

6
00:00:15,410 --> 00:00:17,570
‫Quindi, la definizione ufficiale è

7
00:00:17,570 --> 00:00:19,480
‫che NodeJS è un

8
00:00:19,480 --> 00:00:23,783
‫runtime JavaScript basato sul motore JavaScript V8 open source di Google.

9
00:00:23,783 --> 00:00:26,279
‫Ora, cosa significa in realtà?

10
00:00:26,279 --> 00:00:29,289
‫Bene, iniziamo cercando di capire cosa

11
00:00:29,289 --> 00:00:31,174
‫sono effettivamente il

12
00:00:31,174 --> 00:00:33,913
‫Runtime JavaScript e il motore V8.

13
00:00:35,190 --> 00:00:37,914
‫Quindi, probabilmente hai già usato JavaScript

14
00:00:37,914 --> 00:00:42,120
‫prima e probabilmente era sempre solo all'interno di un browser, giusto?

15
00:00:42,120 --> 00:00:45,400
‫Poiché qualsiasi browser comprende nativamente HTML, CSS

16
00:00:45,400 --> 00:00:49,250
‫e JavaScript e non importa se scrivi JavaScript

17
00:00:49,250 --> 00:00:51,760
‫vanilla o un framework JavaScript

18
00:00:51,760 --> 00:00:54,713
‫come codice React o Angular, è

19
00:00:54,713 --> 00:00:56,370
‫tutto solo

20
00:00:56,370 --> 00:00:59,920
‫JavaScript che viene eseguito direttamente nel browser.

21
00:00:59,920 --> 00:01:01,500
‫Quindi, in questo caso,

22
00:01:01,500 --> 00:01:03,454
‫il browser è quindi JavaScript Runtime.

23
00:01:03,454 --> 00:01:06,110
‫Ma cosa accadrebbe se potessimo togliere JavaScript

24
00:01:06,110 --> 00:01:08,311
‫dal browser ed eseguire

25
00:01:08,311 --> 00:01:10,988
‫semplicemente o il codice JavaScript da qualche

26
00:01:10,988 --> 00:01:14,860
‫altra parte senza tutte le restrizioni che abbiamo nel browser?

27
00:01:14,860 --> 00:01:17,580
‫Bene, si scopre che in realtà possiamo.

28
00:01:17,580 --> 00:01:19,955
‫E la soluzione per questo,

29
00:01:19,955 --> 00:01:23,425
‫come puoi immaginare, si chiama NodeJS e quindi Node

30
00:01:23,425 --> 00:01:25,830
‫JS è solo un altro JavaScript Runtime.

31
00:01:25,830 --> 00:01:29,252
‫È proprio come un contenitore, come un ambiente,

32
00:01:29,252 --> 00:01:32,010
‫in cui un programma scritto

33
00:01:32,010 --> 00:01:37,010
‫in JavaScript può essere eseguito, ma al di fuori di qualsiasi browser.

34
00:01:37,230 --> 00:01:39,850
‫Va bene, in realtà è un po'

35
00:01:39,850 --> 00:01:42,908
‫più complesso di così, ovviamente, ma per ora è abbastanza.

36
00:01:42,908 --> 00:01:45,380
‫Ora, chi esegue effettivamente il codice

37
00:01:45,380 --> 00:01:47,438
‫se non il browser?

38
00:01:47,438 --> 00:01:50,070
‫Ed è qui che entra in

39
00:01:50,070 --> 00:01:52,770
‫gioco il motore V8 sviluppato da Google.

40
00:01:52,770 --> 00:01:55,420
‫Perché è esattamente qui che

41
00:01:55,420 --> 00:01:59,800
‫il codice JavaScript verrà analizzato ed eseguito in NodeJS, ok?

42
00:01:59,800 --> 00:02:02,819
‫Quindi, spero che ora la definizione di

43
00:02:02,819 --> 00:02:07,116
‫NodeJS come JavaScript Runtime sul motore JavaScript V8 abbia molto più

44
00:02:07,116 --> 00:02:10,104
‫senso e, ancora una volta, questa è

45
00:02:10,104 --> 00:02:12,742
‫solo una panoramica di alto

46
00:02:12,742 --> 00:02:16,060
‫livello su cosa sia Node e come funziona.

47
00:02:16,060 --> 00:02:18,430
‫Entreremo in molti dettagli su come

48
00:02:18,430 --> 00:02:20,926
‫Node funziona davvero dietro le quinte nella

49
00:02:20,926 --> 00:02:23,860
‫prossima sezione, ma a questo punto, voglio solo che

50
00:02:23,860 --> 00:02:26,152
‫tu abbia una rapida panoramica

51
00:02:26,152 --> 00:02:28,810
‫in modo che tu possa iniziare ad apprendere

52
00:02:28,810 --> 00:02:32,203
‫i fondamenti di NodeJS in pratica durante tutto questa sezione.

53
00:02:34,000 --> 00:02:36,230
‫Ad ogni modo, ora che

54
00:02:36,230 --> 00:02:38,400
‫abbiamo JavaScript al di fuori

55
00:02:38,400 --> 00:02:40,704
‫del browser in una sorta di

56
00:02:40,704 --> 00:02:44,058
‫ambiente autonomo che è solo NodeJS, possiamo fare tante

57
00:02:44,058 --> 00:02:46,690
‫altre cose con JavaScript che prima erano

58
00:02:46,690 --> 00:02:48,254
‫completamente impossibili come

59
00:02:48,254 --> 00:02:50,515
‫accedere al file system, o

60
00:02:50,515 --> 00:02:53,054
‫migliori capacità di rete non sono

61
00:02:53,054 --> 00:02:55,630
‫possibili con NodeJS e tutti questi fattori

62
00:02:55,630 --> 00:02:59,750
‫insieme ci danno le condizioni perfette per utilizzare NodeJS come server

63
00:02:59,750 --> 00:03:02,327
‫web, il che significa che ora possiamo

64
00:03:02,327 --> 00:03:05,550
‫finalmente utilizzare JavaScript sul lato server dello sviluppo web

65
00:03:05,550 --> 00:03:08,020
‫per creare applicazioni di rete veloci

66
00:03:08,020 --> 00:03:10,810
‫e altamente scalabili per alimentare il back-end

67
00:03:10,810 --> 00:03:13,540
‫tutto per siti web o applicazioni web.

68
00:03:13,540 --> 00:03:15,990
‫E questo è assolutamente

69
00:03:15,990 --> 00:03:19,030
‫fantastico e rivoluzionario per lo sviluppo web.

70
00:03:19,030 --> 00:03:22,103
‫Quindi, diamo ora un'occhiata ad alcuni casi d'uso

71
00:03:22,103 --> 00:03:25,703
‫per Node e perché è così perfetto per lo sviluppo back-end.

72
00:03:27,010 --> 00:03:29,430
‫E la prima cosa di cui

73
00:03:29,430 --> 00:03:31,060
‫dobbiamo parlare è

74
00:03:31,060 --> 00:03:34,603
‫il fatto che le applicazioni Node sono così veloci e

75
00:03:34,603 --> 00:03:36,705
‫così scalabili perché NodeJS è a

76
00:03:36,705 --> 00:03:40,110
‫thread singolo basato su un modello I/O non bloccante

77
00:03:40,110 --> 00:03:43,932
‫guidato dagli eventi che rende NodeJS molto leggero ed efficiente.

78
00:03:43,932 --> 00:03:47,140
‫Ora, questo, ovviamente, suona molto complicato, lo so,

79
00:03:47,140 --> 00:03:50,040
‫ma ancora una volta parleremo esattamente di cosa

80
00:03:50,040 --> 00:03:52,146
‫significa tutto questo un po'

81
00:03:52,146 --> 00:03:54,110
‫più avanti nel corso.

82
00:03:54,110 --> 00:03:56,250
‫Ma, per ora, tieni presente

83
00:03:56,250 --> 00:03:59,052
‫che Node è perfetto per creare applicazioni

84
00:03:59,052 --> 00:04:02,910
‫web ad alta intensità di dati super veloci e scalabili.

85
00:04:02,910 --> 00:04:06,280
‫E questo rende NodeJS una soluzione perfetta per la

86
00:04:06,280 --> 00:04:08,580
‫creazione di tutti i diversi

87
00:04:08,580 --> 00:04:11,830
‫tipi di applicazioni come la creazione di un'API

88
00:04:11,830 --> 00:04:16,830
‫con un database dietro e preferibilmente un database NoSQL non relazionale come MongoDB

89
00:04:17,090 --> 00:04:20,250
‫e questo è esattamente ciò che faremo più

90
00:04:20,250 --> 00:04:24,568
‫avanti in questo corso mentre tuffati sempre più in profondità in NodeJS.

91
00:04:24,568 --> 00:04:27,350
‫Ma ci sono, ovviamente, tutti i tipi di

92
00:04:27,350 --> 00:04:30,007
‫altre app che possiamo creare come applicazioni

93
00:04:30,007 --> 00:04:33,739
‫di streaming di dati come YouTube o Netflix, app di

94
00:04:33,739 --> 00:04:36,600
‫chat in tempo reale o persino applicazioni web

95
00:04:36,600 --> 00:04:39,430
‫lato server in cui l'intero contenuto viene semplicemente

96
00:04:39,430 --> 00:04:42,055
‫generato direttamente sul server, quindi,

97
00:04:42,055 --> 00:04:44,684
‫come vedi, le possibilità sono davvero infinite.

98
00:04:44,684 --> 00:04:47,650
‫Ma in realtà esiste anche un tipo di app

99
00:04:47,650 --> 00:04:49,990
‫che non dovremmo creare con Node.

100
00:04:49,990 --> 00:04:51,890
‫E questo è quando la

101
00:04:51,890 --> 00:04:54,380
‫nostra app ha bisogno di un'elaborazione super

102
00:04:54,380 --> 00:04:57,750
‫pesante sul lato server come avere manipolazioni di immagini, conversione

103
00:04:57,750 --> 00:05:01,270
‫di video, compressione di file o qualcosa del genere, va bene.

104
00:05:01,270 --> 00:05:04,930
‫E imparerai perché è così una volta che ci addentreremo più

105
00:05:04,930 --> 00:05:07,410
‫a fondo nel funzionamento di Node.

106
00:05:07,410 --> 00:05:09,500
‫Quindi, in questo caso,

107
00:05:09,500 --> 00:05:14,010
‫è meglio usare qualcosa come Ruby on Rails, PHP o Python.

108
00:05:14,010 --> 00:05:16,460
‫Poiché NodeJS non è stato

109
00:05:16,460 --> 00:05:19,910
‫sviluppato per questi casi d'uso e sebbene ci siano

110
00:05:19,910 --> 00:05:22,480
‫soluzioni per affrontarli, dovremmo sempre usare

111
00:05:22,480 --> 00:05:25,157
‫lo strumento giusto per l'attività da svolgere.

112
00:05:25,157 --> 00:05:28,361
‫Ok, quindi questi sono i tipi di

113
00:05:28,361 --> 00:05:31,977
‫applicazioni che possiamo e non possiamo creare utilizzando NodeJS.

114
00:05:31,977 --> 00:05:34,780
‫E se scegli di utilizzare Node, beh,

115
00:05:34,780 --> 00:05:37,540
‫allora sei in buona compagnia

116
00:05:37,540 --> 00:05:41,206
‫perché molte importanti aziende come Netflix, Uber, PayPal,

117
00:05:41,206 --> 00:05:45,140
‫Ebay e molte altre ancora hanno già iniziato a utilizzare

118
00:05:45,140 --> 00:05:48,910
‫NodeJS, il che dimostra davvero che la tecnologia è

119
00:05:48,910 --> 00:05:52,850
‫abbastanza stabile a questo punto da essere utilizzato in produzione.

120
00:05:52,850 --> 00:05:56,125
‫Ora, ovviamente ci sono più ragioni per usare Node, e

121
00:05:56,125 --> 00:05:59,040
‫la più grande è probabilmente che usare lo stesso

122
00:05:59,040 --> 00:06:01,650
‫linguaggio in tutto il tuo stack sia

123
00:06:01,650 --> 00:06:03,758
‫sul front-end che sul back-end

124
00:06:03,758 --> 00:06:07,420
‫è molto più facile per te o per il tuo team.

125
00:06:07,420 --> 00:06:09,010
‫Primo, non devi

126
00:06:09,010 --> 00:06:11,070
‫imparare un nuovo linguaggio di programmazione

127
00:06:11,070 --> 00:06:13,580
‫per costruire il tuo back-end e, inoltre,

128
00:06:13,580 --> 00:06:15,824
‫non devi continuare a passare da

129
00:06:15,824 --> 00:06:18,450
‫un linguaggio all'altro, il che renderà l'intero processo

130
00:06:18,450 --> 00:06:20,533
‫di costruzione più veloce ed efficiente.

131
00:06:20,533 --> 00:06:23,107
‫Credimi, è davvero sorprendente

132
00:06:23,107 --> 00:06:26,230
‫essere in grado di utilizzare JavaScript per

133
00:06:26,230 --> 00:06:29,215
‫creare l'intera applicazione dall'inizio alla fine.

134
00:06:29,215 --> 00:06:31,727
‫È assolutamente fantastico davvero.

135
00:06:31,727 --> 00:06:34,150
‫E un altro ottimo

136
00:06:34,150 --> 00:06:38,502
‫motivo per usare Node è che esiste un'enorme libreria di

137
00:06:38,502 --> 00:06:41,450
‫pacchetti o moduli open source, come possiamo

138
00:06:41,450 --> 00:06:43,884
‫anche chiamarli, disponibile per tutti gratuitamente.

139
00:06:43,884 --> 00:06:47,190
‫Si chiama NPM e probabilmente ne hai sentito parlare

140
00:06:47,190 --> 00:06:48,976
‫o l'hai già usato.

141
00:06:48,976 --> 00:06:51,170
‫E, naturalmente, inizieremo anche a

142
00:06:51,170 --> 00:06:53,563
‫utilizzare i pacchetti proprio nella sezione.

143
00:06:54,430 --> 00:06:56,920
‫E, infine, è anche bello

144
00:06:56,920 --> 00:06:59,420
‫sapere che esiste un'enorme comunità attiva

145
00:06:59,420 --> 00:07:02,020
‫di sviluppatori Node là fuori che

146
00:07:02,020 --> 00:07:05,650
‫migliora costantemente NodeJS e aiuta i principianti come te.

147
00:07:05,650 --> 00:07:08,670
‫E così puoi davvero fare affidamento sulla tecnologia

148
00:07:08,670 --> 00:07:11,929
‫per tutti i tuoi progetti negli anni a venire.

149
00:07:11,929 --> 00:07:15,343
‫Ok, questa è stata una breve introduzione

150
00:07:15,343 --> 00:07:20,040
‫e panoramica di NodeJS e di alcuni dei suoi casi d'uso.

151
00:07:20,040 --> 00:07:21,920
‫Quindi, per il resto di

152
00:07:21,920 --> 00:07:23,810
‫questa sezione, ora useremo Node per

153
00:07:23,810 --> 00:07:25,950
‫creare un server web molto semplice

154
00:07:25,950 --> 00:07:28,750
‫e costruire un'API estremamente semplice, in modo che tu

155
00:07:28,750 --> 00:07:30,160
‫possa familiarizzare con

156
00:07:30,160 --> 00:07:32,763
‫i principi di base dello sviluppo di Node.

