Angular 2 ist nicht wirklich MVC (aber ich nehme an, Sie können Parallelen ziehen). Es ist komponentenbasiert. Lassen Sie mich erklären:
Winkel 1 ist MVC und MVVM (MV *). Angular 1 war aus mehreren Gründen wegweisend, aber einer der Hauptgründe war die Verwendung von Dependency Injection. Dies war ein neues Konzept im Vergleich zu anderen JS-Frameworks wie Backbone und Knockout.
Dann kam React heraus und veränderte die Front-End-Architektur vollständig. Das Front-End dachte mehr über andere Optionen als MVC und MVVM nach. Stattdessen entstand die Idee einer komponentenbasierten Architektur. Dies kann als eine der bedeutendsten Veränderungen der Front-End-Architektur seit HTML und JavaScript angesehen werden.
Angular 2 (und Angular 1.5.x) entschieden sich für den React-Ansatz und die Verwendung der komponentenbasierten Architektur. Sie können jedoch leichte Parallelen zwischen MVC, MVVM und Angular 2 ziehen, weshalb ich denke, dass dies etwas verwirrend sein kann.
Allerdings gibt es in Angular 2 keine Controller oder ViewModels (es sei denn, Sie erstellen sie von Hand). Stattdessen gibt es Komponenten, die aus einer Vorlage (wie einer Ansicht), Klassen und Metadaten (Dekoratoren) bestehen.
Die Modelle sind beispielsweise die Klassen, in denen die Daten gespeichert sind (z. B. ein Datenvertrag zum Speichern von Daten, die vom http-Dienst unter Verwendung von @ angle / http zurückgegeben werden). Wir können eine neue Klasse erstellen, die Methoden und Eigenschaften (Logik) hinzufügt, und dann das Modell und die Klasse zusammenführen. Dadurch wird so etwas wie ein ViewModel erstellt. Wir könnten dieses ViewModel dann in unserer Komponente verwenden.
Es ist jedoch nicht richtig, die Klasse oder den Dienst einer Komponente als ViewModel oder Controller zu bezeichnen. Die Komponente enthält die Vorlage und die Klasse. IMO ist es ein bisschen wie Liskovs Theorie - eine Ente ist keine Ente - versuchen Sie nicht, das MVC- oder MVVM-Muster in Komponenten zu zwingen, da diese unterschiedlich sind. Stellen Sie sich Angular 2 als Komponenten vor. Aber ich kann sehen, warum Menschen Parallelen ziehen, um ihr anfängliches Verständnis zu verbessern.
Angular verwendet auch Module, die Teil einer kommenden Version von JavaScript (ECMAScript 6) sind. Dies ist sehr leistungsfähig, da JavaScript immer Probleme mit Namespaces und der Code-Organisation hatte. Hier kommen Importe und Exporte zu Komponenten ins Spiel.
Nützliche Links:
https://medium.com/javascript-scene/angular-2-vs-react-the-ultimate-dance-off-60e7dfbc379c
Ist angle2 mvc?