Mischen von Angular und ASP.NET MVC / Web-API?


40

Ich komme von der Verwendung von ASP.NET MVC / Web API und beginne jetzt mit der Verwendung von Angular, mir ist jedoch nicht klar, wie ich sie richtig mischen soll.

Bieten die serverseitigen Konzepte von MVC nach der Verwendung von Angular noch einen Wert? Oder sollte ich ausschließlich die Web-API verwenden, um Daten für die winkligen HTTP-Aufrufe abzurufen?

Gibt es vielleicht einen abgespeckten Ausgangspunkt, den ich verwenden sollte, wenn die VS-Vorlage viele Dinge hinzufügt, die ich nicht benötige?

Ich mag die Idee einer strikten Trennung von Server-Seite = reine Daten und Client-Seite = reine HTML-Verarbeitung.


Antworten:


17

Der einfachste Weg, darüber nachzudenken, besteht darin, dass der Server einen Status bedient. Angular kann das Sammeln der Aktualisierungen für diesen Status verwalten und an ein Web / API auf dem Server senden. Wenn Sie mehr einseitige Apps verwenden möchten, ist der serverseitige Code nur der Anfangszustand Ihrer App.

Die Web-API ist ein hervorragender Ausgangspunkt für das Abrufen Ihrer Daten in Ihre App. Sie werden die Standardrouter nach und nach aktualisieren, um die Designanforderungen Ihrer Umgebung zu erfüllen, und wenn Sie möchten, müssen Sie sich streng ausruhen.

Es gibt einige Bibliotheken, die standardmäßig in ASP4 enthalten sind und die auch in den MVC4-Vorlagen enthalten sind. Es gibt wirklich viele Dinge auf der Seite, die nicht benötigt werden, sowie im Projekt enthalten sind und auf die von ihren Standardseiten nicht einmal verwiesen wird. Sie sollten sicher sein, alles außer jQuery zu entfernen, und ich gehe sogar so weit, jQueryUI zu entfernen. Viele der Standardeinstellungen haben eine gute Bedeutung, aber sobald Sie Ihr Domänenwissen eingegeben haben, werden Sie Bibliotheken verwenden, die Ihren spezifischen Anforderungen entsprechen.

Auch mit einer strengen Trennung werden Sie feststellen, dass mvc auf der Serverseite immer noch ein sehr sauberes Backing für eine einzelne Seiten-App ist. Effektives Routing bei der Übermittlung Ihrer Seite und Ihrer API-Aufrufe ist ein erstklassiges Beispiel. Eine weitere nützliche Funktion sind Steuerungen, die Ansichten zurückgeben, die die Masterseite nicht oder nur teilweise verwenden. Angular verfügt über eine "Ansicht", die mit einer Vorlage gefüllt werden kann, die eine statische Datei oder ein Teil einer Ihrer Routen sein kann.

Ich habe Ihren Kommentar heute gelesen und eine Demo-Lösung zusammengestellt, um zu zeigen, was ich ursprünglich erwähnt habe. Die Lösung hat auch einige der ursprünglichen "Flusen" entfernt, obwohl Sie beim Hinzufügen von Angular und Bootstrap die Kernbibliotheken und jede Ableitung dort mit erhalten. Das ist der Kompromiss zwischen der Verwendung von nuGet.

Probieren Sie es aus: https://github.com/QueueHammer/AngularWithPartialViewViews

Beim Lernen von Angular fand ich das Angular-Seed-Programm ziemlich hilfreich. Besonders nachdem ich die Demos auf ihrer Seite ausprobiert hatte. Das Beispielprojekt ist nur so unterschiedlich, dass es Ihnen beim Lernen hilft. Danach habe ich mir Angular-Require-Seed angesehen, aber das ist ein anderer Beitrag. Angular Schritt für Schritt http://docs.angularjs.org/tutorial Angular Seed: https://github.com/angular/angular-seed


Wäre es also sinnvoll, ein paar serverseitige Ansichten zu haben, so wie MVC normalerweise funktioniert? Dann gibt es für jede dieser Ansichten mehrere clientseitige eckige Ansichten (möglicherweise ein create / details / edit für eine bestimmte Entität). Wenn ja, dann wünschte ich mir, ich könnte eine
solche

Fügte einen Link zum Demo-Projekt hinzu und wo ich mich zum ersten Mal mit Angular beschäftigte. Ich werde über SPAs im Allgemeinen und einige der besseren Muster / Bibliotheken bloggen, die ihre architektonischen Herausforderungen in den nächsten Monaten lösen. Ich werde meinen Beitrag aktualisieren, wenn ich es tue.
QueueHammer

Habe gerade deinen Link bekommen .. habe die Demo angeschaut. Sieht gut aus. Die erste Frage ist. Also. Sie behalten die ASP.NET MVC-Funktionalität als Startseite bei. Jenseits dieser Seite sind alles andere eckige Teilansichten. Könnten Sie ZWEI Haupt-ASP haben. NET MVC Ansichten? Mit anderen Worten: Die ASP.NET-MVC-Ansicht ist ein übergeordnetes Element der eckigen Teilansichten. Beispiel: Ich möchte möglicherweise nicht ALLE Teilansichten unter EINER ASP.NET-Ansicht. Ist das sinnvoll? Könnten Sie mir das zeigen? Das, was mich zu einem guten Ausgangspunkt gemacht hat, ergibt meiner Meinung nach keinen Sinn.
Punkouter

und wozu dient die partialsController.cs, da sie diese niemals aufruft?
Punkouter

Sie können die Teilstriche fast überall platzieren. Sie könnten mehr Steuerungen mit einer Aktion pro Ansicht erstellen. Ich habe eine "partialsController.cs" verwendet, die den im Winkel-App-Modul definierten Ansichten entspricht. Daher ruft partial / view1 den Partials-Controller auf und ruft die Aktion viewOne ab, die dann die Ansicht ViewOne abruft. In den Aktionen können Sie View () aufrufen; Übergeben Sie mit einem String-Parameter die Position Ihrer Ansicht. So haben Sie die Flexibilität, es so zu organisieren, wie Sie möchten.
QueueHammer

18

Gibt es vielleicht einen abgespeckten Ausgangspunkt, den ich verwenden sollte, wenn die VS-Vorlage viele Dinge hinzufügt, die ich nicht benötige?

Diese VS-Vorlagen sind gut geeignet, um die anfängliche Einrichtung und Lernkurve am Anfang zu verkürzen. Sie müssen sie jedoch an Ihre tatsächlichen Projektanforderungen anpassen.

Zum Beispiel auf dieser Website http://www.reviewstoshare.com , mein Freund AngularJSzusammen mit ASP.NET MVC. Beachten Sie, dass diese Site bereits mit ASP.MVC + Jquery erstellt wurde, um bei Bedarf eine Seiteninteraktion durchzuführen.

Auf der anderen Seite gibt es immer noch etwas "Ajaxy" an der Seite wie Kommentare, Abstimmungen, Markierungen usw. Nicht allzu verschieden von Stackoverflow selbst. Vor AngularJS war es ein Durcheinander von Jquery-Plugins und -Funktionen innerhalb von $(document).ready()Callback, ganz zu schweigen davon, dass der JS-Code nicht viel testbar war.

Alles in allem macht eine gute Mischung aus beidem Ihre Website glatt und funktionell.

Bildbeschreibung hier eingeben

Einige gute Hinweise zum Anschauen:


Oder wenn es unter einer Sammlung von kantigen
Teilseiten

Dies ist wahr, die SEO-Probleme wurden durch neue Updates behoben.
EL Yusubov

3
Also nicht zu kritisieren, aber wären die negativen Aussagen auf dem Chart nicht tatsächlich unterhalb der x-Achse? Das würde die Karte wie eine sich immer weiter ausbreitende Sündenwelle aussehen lassen. Ich weiß, es ist nicht dein Diagramm, aber seine schlechte Wissenschaft.
QueueHammer

12
QueueHammer Sie müssen auf Partys richtig Spaß machen. :-)
Thomas Stock

1
Ich stecke total in den beiden unteren Punkten der Welle auf beiden Seiten des 'Very Cool!' Blase, als eine kombinierte scheiß eckige Hölle.
MetaGuru
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.