Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Node.js für ASP.NET-Entwickler

Controller unter Node.js

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
In diesem Video beschäftigen Sie sich mit den MVC-Patterns und den Möglichkeiten bei der Implementierung in einer Node.js-Anwendung.

Transkript

In diesem Video beschäftigen wir uns mit den MVC-Pattern und zwar so wie wir es gewohnt sind aus ASP.NET MVC Und wie kann man eben dieses Pattern sauber zum Beispiel auch bei einer Node.js-Anwendung mit implementieren. Einmal geht es ja darum, dass wir mit dem MVC-Pattern den Code schön auftrennen können, das bedeutet wir haben eigenständig unsere View-Datei und wir haben dann einen eigenständigen Controller Datei und eine model-Datei. Und in dem Fall unter Node.js und Express.js werden automatisch die URL-Parameter zu den jeweiligen Controller-Funktionen zugeordnet und diese verarbeiten dann diese Anforderung, also das heißt hier die Benutzereingaben zum Beispiel, die werden entgegengenommen und dementsprechend wird dann innerhalb von Controller die Anwendungslogik an die Geschäftslogik weitergereicht, die dann entsprechend ein Model wäre. Die Controller-Funktion ruft in der Regel dann auch die Render-Funktion auf, um eben das HTML-Markup bereitzustellen, also, so wie man es eben auch aus ASP.NET MVC kennt. Da hat man ja auch für jeden eigenen Anwendungsbereich den eigenen Controller und der nimmt dann die Eingaben entgegen und gibt dann mittels Return View die jeweilige Seite zurück und exakt so funktioniert das auch unter Node.js, nur dass es halt eben die Render-Funktion direkt ist. Und die wird ja über eine View Engine bereitgestellt und ja, in dem Fall ist exakt das gleiche Prinzip, wie man es eben aus ASP.NET MVC kennt. und wir haben bereits sogar schon einen Controller geschrieben und unterschiedliche View Engines gesehen, nur müssen wir jetzt dazu noch eine ideale Struktur einfügen, weil bisher es ist ein einziger Controller und die ganze Initialisierung von Express.js, die steht auch in diesem Controller. Das wollen wir etwas loslösen und dazu gibt es dann die folgende Lösung. Wir können hier eben ein neues Verzeichnis namens controllers anlegen und ja, dementsprechend für jeden Controller eine eigene JavaScript-Datei erzeugen. Sstandardmäßig haben wir dann passend im controllers-Verzeichnis eine index.js die dann als modul.export bereitgestellt wird, wird und alle Controller einmalig registriert. Und das passiert hier eben bei der index.js. Genau hier werden dann alle Controller immer mittels require einmal instanziiert und allgemeine Anwendung dann hierfür zur Verfügung gestellt. Das Initialisieren dann dieser controller.index geschieht dann in der main.js-Datei, also die Datei, die dann eben Express.js initialisiert und startet. Und das Schöne ist System, das diese Initialisierungs JavaScript-Datei komplett frei ist von den ganzen Controllern. Es wird also einmalig controllers initialisiert und ansonsten ist hier keine weitere Controller-Logik mehr. Und das ist aus Architektursicht natürlich viel besser. Schauen wir uns noch einmal an einem live Beispiel an. Dann kann man einiges besser verstehen. Und zwar öffne ich mein letztes Vash-Beispiel. Hier wird also die View Engine Vash weiterhin benutzt und wie schon gesagt, hier haben wir eigentlich schon so was wie gleichgewichtigen Controller, aber ist nicht ideal an dieser Stelle, weil später bei Express.js viele viele weitere Middlewares zum Einsatz kommen, und viele weitere Konfigurationen zum Webserver selbst und dann dazwischen noch Controller-Logik. Für eine richtig große Anwendung, das ist aus der Architektursicht ein absolutes No-Go. Und dazu wird jetzt hier neues Verzeichnis angelegt mit controllers. Es gibt zum Beispiel eben auch diese Feature bassierte Struktur, die ich auch eher sogar bevorzuge, das bedeutet anstatt Controllers, Views und Modele in verschiedenen Verzeichnissen zu lagern, wird jeds einzelne Unterseite, also Feature basiert ein Verzeichnis erzeugen und da kommt dann das Model, der Controller und die View unter. Allerdings weil es eben am meisten verbreitet ist diese Vorgehensweise So zu machen, wie ich jetzt zeige, wird sie also so demonstriert. Einfach ruhig nach Feature bassierter Struktur suchen, und sich das vielleicht genauer anschauen. Andernfalls haben wir eigentlich ja unseren Controller. Dann erzeugen wir hier unseren "home controller ts" Also wir arbeiten hier schön mit TypeScript. Und dann brauchen wir eigentlich nur noch unsere "function" zu schreiben. Das wäre unsere "init function". In dem Fall kriegen wir die Application durchgereicht. Brauchen jetzt auch keine weitere Typdefinition, wobei in dem Fall hilft es sogar, wenn wir hier greifen bei der App dann hier auf die GET-Funktion zu. Das bedeutet jetzt kommt hier eigentlich eben die wesentliche Controller Logik, die man eigentlich haben möchte. Das bedeutet, die haben wir ja schon. Deswegen kopiere ich einfach oder besser gesagt, ich schneide es mit Strg+x aus und füge es explizit hier ein. Speichere das Ganze und mit ALT+Shift+f formatiere ich den Code und so können wir jetzt nacheinander immer die einzelnen Controller-Funktionen mitgeben, weitere Aufrufe, Formularaufrufe et cetera. Das kann man also alles wunderbar mit einbringen. Und ja, jetzt muss halt noch der Home Controller erstmal initialisiert werden. Dazu brauchen wieder eine index.ts-File, die hierbei alle Controller einmalig initialisiert. Das heißt wir haben hier ein "import homeController =require ./homeController" Stimmt, ich habe noch was vergessen und zwar er erkennt es nicht als Modul. Das Ganze noch als export einstellen, und anschließend gibt es natürlich von uns selber nochmal eine export function. init-Funktion auch hier haben wir wieder App, brauchen jetzt kein Typen dazu. Und dann wird eben nichts anderes gemacht, dass jeder Controller einmalig initialisiert wird, und die App-Instanz durchgereicht wird. ALT+Shift+f, es ist schon formatiert, Strg+s, alles schon speichern. Und jedes mal wenn ein neuer Controller hinzugefügt wird, muss halt das äußere Gerüst einmalig zur Verfügung gestellt werden, hier in der index-Datei registriert werden Und das war's, hier muss man gar nicht mehr machen. Dennoch fehlt hier einmalig dann nochmal Initialisierung, dann von unserer Initialisierung-index.ts und zwar mittels "import controllers require" und zwar brauchen wir dann nämlich nur noch das Verzeichnis controllers auswählen. Es wird dann automatisch die index.js verwendet und dann kann man das Ganze hier auch wunderbar aufrufen unter "controllers init app"- So haben wir eine schöne Struktur aufbauen können, Und wenn ich das Ganze starter mit f5, können wir das Ganze auch einmal testen, und wir sehen, es funktioniert wunderbar wie vorher auch. Und haben jetzt eine saubere Controller-Struktur einbringen können.

Node.js für ASP.NET-Entwickler

Sehen Sie, wie Sie den Umstieg auf auf native JavaScript-Entiwcklung mit Node.js erfolgreich meistern.

2 Std. 52 min (31 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:15.05.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!