Programmierblog von Johannes Dienst

Async/Await – Fehlerbehandlung, Generatoren

Posted by in JavaScript

Im letzten Blog ging es um Die Grundlagen von Async/Await. Dieser Teil behandelt die Fehlerbehandlung, Probleme die es bei der Verwendung von Async/Await geben könnte und der Basisfunktionalität, ohne die es gar nicht möglich wäre Async/Await in dieser Form bereitzustellen. Fehlerbehandlung Die Fehlerbehandlung mit Async/Await kann man erheblich vereinfachen, indem try/catch-Blöcke verwendet werden. Das geht dann wie im folgenden Code

Dafür muss jedoch die Funktion getInspiration2 geändert werden. Dort muss beim Reject des Promises das error-Objekt zurückgegeben werden.

Vorteil dieser Implementierung ist, dass Fehler sinnvoll abgefangen werden können…read more

0

Karlsruher Entwicklertag 2016: Conference Day

Posted by in JavaScript, Konferenz, TypeScript

Mit etwas Verspätung wegen Urlaub schreibe ich diesmal etwas zu der Konferenz Karlsruher Entwicklertag 2016. Ich muss dazu sagen, dass ich nur am sogenannten Conference Day anwesend war und diesmal sogar zwei Vorträge halten durfte. Organisation Die Organisation war einwandfrei und lies fast keine Wüsche offen. Das ging von den Vorabinformationen per Email (Verzeihen Sie mir bitte die Emails Frau Lippert) bis zur Durchführung. Einige Session wurden professionell aufgezeichnet und die Ausstattung in den Räumlichkeiten funktionierte ohne größere Probleme. Nur das WLAN machte beim Live-Coding zicken. Wie sollte es auch…read more

0

Async/Await in JavaScript – Die Grundlagen

Posted by in JavaScript

Asynchrone Programmierung ist immer wieder eine Herausforderung. Ein häufiges Problem ist die Callback Hell Inzwischen existieren in JavaScript mehrere Möglichkeiten mit der Komplexität umzugehen. Allen voran Promises, die seit ES2015 sogar zum Sprachstandard gehören. Noch einfacher mit Async/Await Mit ES2017 kommt eine weitere Abstraktion hinzu. Sie baut auf Promises auf und der Code liest sich damit wie synchroner Code. Aber fangen wir von vorne an. Zuerst wird eine Funktion mit einem asynchronen Aufruf gebraucht. Dafür benutze ich das API von https://theysaidso.com.

Mit etwas Übung fällt der Fehler in dieser…read more

0

JavaScript-Bug ganz subtil

Posted by in JavaScript

JavaScript ist manchmal eine Sprache, die subtile Bugs produziert. Hier ist die Preisfrage: Was ist an diesem Code-Schnipsel falsch und was sind die Auswirkungen?

Keine Idee? Ich musste auch erst überlegen, da ich solche Fehler eigentlich nirgendwo erwarten würde. Das Problem ist in Zeile 6 zu finden. Die Variable json_data wird dort initialisiert. Leider nicht im lokalen Scope, sondern anscheinend im globalen Scope. Von JSON.parse() wird ein Array zurückgeliefert. Beim Debuggen hat sich dann gezeigt, dass die Array.length nicht zurückgesetzt wird. Hat es die Länge 10 bei einem Durchlauf…read more

0

TypeScript 1.6: Endlich sinnvolle Mixins?

Posted by in JavaScript, TypeScript

Wie in meinem Artikel im JavaSpektrum beschrieben, gab es bis zur Version 1.6 keine richtige Untersützung für Mixins. Mixins waren nur mit einer zusätzlichen applyMixins() möglich und auch dann hatte man jede Menge Boilerplate-Code zu schreiben, die die ganzen Vorteile zunichte gemacht haben. Intersection Types für die Rettung? Mit Intersection Types sollen jetzt laut diesem Blogpost Mixins endlich sinnvoll einsetzbar sein. Aber stimmt das? Schauen wir uns dazu einfach das Beispiel aus dem Post genauer an:

Man braucht eine Methode, um zwei Instanzen zu mixen. So ganz erklärt das…read more

0

Nodemon und PM2 mit Express 4

Posted by in JavaScript, Nodejs

Nodemon und PM2 sind sehr nützliche Tools für die Entwicklung und dann später in der Poduktion. Mit Express 3 konnte man nach der Installation einfach diese Aufrufe zum starten der Applikation benutzen:

Mit dem neuen Layout von Express 4 änderte sich das Startkommando auf npm start. Dabei wird auf die package.json und dort auf Scripts->start verwiesen, das dann ausgeführt wird. Will man Nodemon starten, dann muss man hier statt node einfach nodemon eintragen.

Startet man jetzt die Applikation sieht man in der Konsole, dass sie mit Nodemon gestartet…read more

0

Nib: Library für Stylus

Posted by in JavaScript, Nodejs, Präprozessor

Mit dem Präprozessor Stylus habe ich im letzten Blog meine Loginseite gestylt. Das Ergebnis sah dann so aus: Stylus an an sich ist schon sehr mächtig. Erweitert man es zusätzlich mit Nib hat man so ziemlich alles an der Hand, was man so braucht um Webseiten sogar Cross-Browserfähig zu gestalten. Installation Um Stylus mitzuteilen, dass es Nib verwenden soll hängt man in der Funktion compile noch ein use(nib()) an das return-Statement mit an.

In der style.styl muss man nur noch die gebrauchten Features einbinden. Für das Augmentieren von Gradienten…read more

0

Nodejs-Tutorial Teil 8: Benutzer löschen

Posted by in JavaScript, Nodejs

Mit Teil 7 des Tutorials ging es in Windeseile weiter Richtung vollständiger CRUD-Anwendung. Genauso schnell werden wir in diesem Teil das (D)elete implementieren und das Einsteiger Tutorial abschließen. Der Löschbutton Im Template userstart.jade wird ein einfacher Button mit dem Namen Benutzer löschen eingebaut. Dessen Action auf deleteuser zeigt. Das wars auch schon. Keine weitere MAGIC 😉

Die Löschroute In der index.js implementieren wir eine neue Route, die unserem Button zugeordnet wird. Es wird wie im vorherigen Teil zuerst das Benutzerdokument gesucht, das gelöscht werden soll. Wird es in unserer…read more

0

Nodejs-Tutorial Teil 7: Benutzer aktualisieren

Posted by in JavaScript, Nodejs

In Teil 6 haben wir die Funktionalität unserer Applikation um eine Benutzerregistrierung erweitert. In diesem Teil, soll nach dem Login die Email Adresse geändert werden können. Profiltemplate modifizieren Im Profiltemplate soll statt dem hässlichen JSON-String eines Users, der Benutzername und die aktuelle Emailadresse angezeigt werden. Darunter gibt es ein Inputfeld für eine neue Emailadresse. Die Formular-Action zeigt auf die Route updateemail

Änderungsroute implementieren Die Route aktualisiert den Benutzer, falls er in der Datenbank existiert. Hier holt man sich zuerst den User aus der Datenbank und bearbeitet dann das Dokument…read more

0

Nodejs-Tutorial Teil 6: Benutzerregistrierung

Posted by in JavaScript, Nodejs

Da sind wir auch schon bei Teil 6 des Tutorials gelandet, der es Benutzern endlich erlauben soll, sich auch selbst einen Login zu erstellen. In Teil 5 gab es eine große Umbauaktion, mit dem wir eine vernünftige Architektur auf die Beine gestellt haben. Damit kann die Registrierung eines neuen Benutzers relativ schmerzfrei implementiert werden. Los gehts! Template für Benutzerregistrierung Wirklich Besonderes gibts dazu nicht zu sagen, denn es ist eigentlich nur eine Kopie des Logins, die register.jade heißt. Die Form wurde so verändert, dass die action auf die Route register…read more

0