1
00:00:00,000 --> 00:00:04,480
[MUSIC]

2
00:00:04,480 --> 00:00:09,994
Nello sviluppo web si sentono spesso persone parlare del framework MVC e

3
00:00:09,994 --> 00:00:13,020
del framework MVVM e così via.

4
00:00:13,020 --> 00:00:14,460
Cosa sono esattamente questi framework?

5
00:00:15,560 --> 00:00:20,050
Come sono utili nello sviluppo web?

6
00:00:20,050 --> 00:00:22,257
Parliamone brevemente dopo.

7
00:00:24,177 --> 00:00:26,688
Nel mondo dell'ingegneria del software,

8
00:00:26,688 --> 00:00:31,140
spesso si sente parlare di modelli di progettazione.

9
00:00:31,140 --> 00:00:37,470
Quello che esattamente significano è smettere di reinventare la ruota ogni volta.

10
00:00:37,470 --> 00:00:43,880
Un modello di progettazione è una soluzione ben documentata a un problema ricorrente.

11
00:00:43,880 --> 00:00:48,540
Molto spesso, ti vedi ripetutamente risolvere problemi simili.

12
00:00:48,540 --> 00:00:53,860
Se abbiamo una documentazione ben specificata su come risolvere questi problemi,

13
00:00:53,860 --> 00:00:56,720
perché continuare a reinventare la ruota ogni volta?

14
00:00:56,720 --> 00:00:59,140
Ecco dove

15
00:00:59,140 --> 00:01:03,220
nasce il concetto di modello di progettazione dell'ingegneria del software.

16
00:01:03,220 --> 00:01:08,420
A volte vedi anche persone che si riferiscono a questo come un modello di architettura.

17
00:01:08,420 --> 00:01:13,094
Quindi, per riassumere, i modelli di progettazione del software in particolare sono una

18
00:01:13,094 --> 00:01:17,706
soluzione riutilizzabile ai problemi che si verificano comunemente che vengono risolti nel software.

19
00:01:17,706 --> 00:01:22,209
Ora, in questo contesto, si sente spesso la gente parlare della banda dei quattro.

20
00:01:23,830 --> 00:01:29,217
Questo è stato un gruppo di quattro autori che hanno scritto questo libro fondamentale chiamato

21
00:01:29,217 --> 00:01:35,390
Design Patterns: Elements of Reusable Object-Oriented Software.

22
00:01:35,390 --> 00:01:39,500
In questo libro, hanno identificato una vasta serie di

23
00:01:39,500 --> 00:01:41,770
modelli di progettazione comunemente utilizzati nell'ingegneria del software.

24
00:01:41,770 --> 00:01:48,030
Questa è stata una delle prime esplorazioni ben documentate dei modelli di progettazione,

25
00:01:48,030 --> 00:01:53,370
e quindi, è diventata il gold standard per chiunque lavorasse in

26
00:01:53,370 --> 00:01:58,410
ingegneria del software, specialmente preoccupato per i pacchetti di progettazione.

27
00:01:58,410 --> 00:02:03,320
Questo modello di ingegneria software ci consente di isolare la

28
00:02:03,320 --> 00:02:06,706
logica del dominio dall'interfaccia utente.

29
00:02:06,706 --> 00:02:11,827
Quindi stai fondamentalmente separando la vista dell'utente delle informazioni

30
00:02:11,827 --> 00:02:17,146
dalla logica effettiva e da come le informazioni memorizzate e manipolate.

31
00:02:17,146 --> 00:02:22,280
Ora questa separazione di preoccupazioni concetto che si sta andando a sentire più e

32
00:02:22,280 --> 00:02:25,600
più volte in questo contesto.

33
00:02:25,600 --> 00:02:30,290
La separazione delle preoccupazioni è ciò che facilita lo sviluppo indipendente di

34
00:02:30,290 --> 00:02:34,700
ciascuna di queste tre parti della nostra applicazione e

35
00:02:34,700 --> 00:02:39,350
consente anche il test e la manutenzione di queste diverse parti.

36
00:02:39,350 --> 00:02:42,640
Ora possiamo dividere la nostra intera applicazione in tre parti,

37
00:02:42,640 --> 00:02:46,820
la vista che riguarda principalmente la presentazione delle informazioni all'utente,

38
00:02:46,820 --> 00:02:51,930
il modello che memorizza lo stato del dominio e la logica del dominio e

39
00:02:51,930 --> 00:02:57,430
fornisce anche il modo di

40
00:02:57,430 --> 00:03:02,604
manipolare questo stato dal resto dell'applicazione e

41
00:03:02,604 --> 00:03:08,180
il controller che mediano tra la vista e il modello.

42
00:03:08,180 --> 00:03:12,550
Parleremo di ognuna di queste tre parti in un po 'più di dettaglio dopo.

43
00:03:12,550 --> 00:03:17,360
Nel framework MVC, il modello gestisce il comportamento e

44
00:03:17,360 --> 00:03:19,760
i dati del dominio dell'applicazione.

45
00:03:19,760 --> 00:03:25,433
E il modello risponde alle richieste di informazioni sul suo stato attuale.

46
00:03:25,433 --> 00:03:30,374
Quindi, in genere, quando la vista vuole renderizzare, o la vista vuole

47
00:03:30,374 --> 00:03:35,065
aggiornarsi, potrebbe interrogare il modello per ottenere informazioni in modo

48
00:03:35,065 --> 00:03:38,703
che possa essere renderizzata in modo appropriato all'utente.

49
00:03:38,703 --> 00:03:45,632
Il modello risponderà anche alle richieste di cambiamento del suo stato.

50
00:03:45,632 --> 00:03:48,574
Questo di solito viene fatto attraverso il controllo.

51
00:03:48,574 --> 00:03:51,712
In un sistema basato su eventi,

52
00:03:51,712 --> 00:03:57,810
il modello può anche essere configurato per notificare gli osservatori.

53
00:03:57,810 --> 00:04:02,670
Così gli spettatori possono registrarsi come osservatori per il modello e così

54
00:04:02,670 --> 00:04:06,940
quando il modello viene aggiornato, le viste verranno automaticamente attivate per

55
00:04:06,940 --> 00:04:10,960
aggiornarsi in base alla modifica dello stato del modello.

56
00:04:12,160 --> 00:04:17,290
La vista stessa riguarda la presentazione delle informazioni agli utenti in un

57
00:04:17,290 --> 00:04:23,690
elemento dell'interfaccia utente in modo tale che faciliti sia la presentazione delle

58
00:04:23,690 --> 00:04:29,630
informazioni all'utente e consente anche all'utente di interagire con l'applicazione.

59
00:04:29,630 --> 00:04:33,970
Quindi la vista può rappresentare una rappresentazione dello stato del modello.

60
00:04:33,970 --> 00:04:38,662
Quindi, dal singolo modello, è possibile derivare facilmente più modi di

61
00:04:38,662 --> 00:04:43,449
presentare queste informazioni all'utente, a

62
00:04:43,449 --> 00:04:47,051
seconda, ad esempio, della dimensione della finestra.

63
00:04:47,051 --> 00:04:51,840
Quindi una finestra di piccole dimensioni come su un'applicazione mobile,

64
00:04:51,840 --> 00:04:57,359
le informazioni saranno presentate in un modo diverso rispetto

65
00:04:57,359 --> 00:05:03,000
a una porta di visualizzazione più grande che è facilitato su un computer desktop.

66
00:05:04,248 --> 00:05:08,620
Quindi in un framework MVC tutta la visualizzazione delle informazioni ha una

67
00:05:08,620 --> 00:05:13,490
corrispondenza uno a uno con lo stato del modello.

68
00:05:15,850 --> 00:05:20,380
Il terzo pezzo di puzzle nel framework MCV è il controller.

69
00:05:21,400 --> 00:05:26,750
Il compito del controller è quello di ricevere informazioni dalla vista.

70
00:05:26,750 --> 00:05:30,500
Quindi qualsiasi interazione dell'utente che viene eseguita verrà catturata e

71
00:05:30,500 --> 00:05:35,720
quindi passata sul controller per agire su queste interazioni utente.

72
00:05:35,720 --> 00:05:40,040
Ed è compito del controller quindi avviare un cambiamento dello stato

73
00:05:40,040 --> 00:05:46,870
del modello, se è richiesto in questa particolare situazione.

74
00:05:46,870 --> 00:05:51,940
Quindi il controller causerà in modo appropriato il cambiamento dello stato del modello.

75
00:05:51,940 --> 00:05:55,940
Quindi, per riassumere, il controller può accettare input

76
00:05:55,940 --> 00:06:00,860
dall'utente in termini di interazioni utente che hanno avuto luogo, e

77
00:06:00,860 --> 00:06:06,935
quindi istruirà il modello di cambiare lo stato.

78
00:06:06,935 --> 00:06:09,500
Contemporaneamente, il controller può anche

79
00:06:09,500 --> 00:06:14,470
causare la vista di modificare il modo in cui le informazioni vengono visualizzate nella vista.

80
00:06:14,470 --> 00:06:19,230
Quindi questo è il motivo per cui in questa immagine hai due frecce

81
00:06:19,230 --> 00:06:24,000
che vanno dal controller, una verso il modello e l'altra verso la vista.

82
00:06:25,060 --> 00:06:29,910
A volte si sentono persone parlare dell'approccio vista modello modello.

83
00:06:29,910 --> 00:06:33,490
L' approccio del modello di vista vista modello è, in un certo senso,

84
00:06:33,490 --> 00:06:37,050
una derivata dell'approccio del controller della vista del modello.

85
00:06:37,050 --> 00:06:40,620
A volte si sentono anche persone che si riferiscono ad esso come l'

86
00:06:40,620 --> 00:06:41,768
approccio del raccoglitore vista modello.

87
00:06:41,768 --> 00:06:45,502
Qui, hai il modello che rappresenta la logica di business e

88
00:06:45,502 --> 00:06:47,311
i dati per la tua applicazione.

89
00:06:47,311 --> 00:06:52,367
Dal modello, derivate un modello di vista, che incapsula quella

90
00:06:52,367 --> 00:06:58,095
parte delle informazioni necessarie per il rendering di una vista specifica.

91
00:06:58,095 --> 00:07:02,635
Quindi il modello di visualizzazione è l'astrazione della vista che espone

92
00:07:02,635 --> 00:07:07,395
le proprietà pubbliche e i vari comandi disponibili.

93
00:07:07,395 --> 00:07:10,125
Quindi questo fornisce un'associazione dati dichiarativa.

94
00:07:11,690 --> 00:07:16,300
In un certo senso, il modo in cui

95
00:07:16,300 --> 00:07:21,520
il componente e i modelli in angolare sono implementati, può essere visto come

96
00:07:21,520 --> 00:07:27,250
una variante dell'approccio vista modello modello.

97
00:07:27,250 --> 00:07:32,006
Con questa rapida comprensione del MVC e del framework MVVM,

98
00:07:32,006 --> 00:07:36,686
procediamo ora a capire di più sui servizi angolari.

99
00:07:36,686 --> 00:07:43,099
[ MUSIC]