201518Jul

JavaScript: Grundätzliche Entwurfsmuster für Node.js

Wer als JavaScript-Entwickler mit Node.js anfängt, wird anfangs vermutlich auf einige Stolpersteine stoßen. In der Welt von Node.js gibt es ein paar Unterschiede im Vergleich zur klassischen Webentwicklung im Browser, da andere Konzepte vorliegen und eine entsprechende Programmierung erforderlich ist. Im Blog von Rising Stack findet sich dazu ein kompakter Artikel, der sich mit Entwurfsmustern für Node.js beschäftigt.

RisingStack - Fundamental Node.js Design Patterns

Zu den beschriebenen Entwurfsmustern (Design Patterns) zählen beispielsweise Singletons, Observer, Factories oder Dependency Injection. Singletons sind etwa mit statischen Funktionen vergleichbar und benötigen keine mehrfache Instanziierung. So können Singletons in Verbindung mit module.exports eine statische Klasse bilden, in der sich verschiedene Hilfsfunktionen finden. Schließlich werden in dem Beitrag noch kurz Middlewares und Pipelines beschrieben, die vor allem bei Anwendungsframeworks wie Express oder Koa zum Einsatz kommen.

201514Jul

Cola.js: Bibliothek für Constraint-Layout-Diagramme

Graphen und Diagramme, die auf einer kraftgelenkter Anordnung basieren (Force-Directed Graphs), können auch als "Constraint-Based Layout" bezeichnet werden. Für derartige Szenarien bieten sich Skripte wie Arbor.js oder Sigma.js an. Es gibt zudem noch eine weitere Bibliothek, die interessante Features bietet: Cola.js kann mit D3.js, SVG.js, aber auch mit THREE.js kombiniert werden, um kraftgelenkte Graphen zu zeichnen.

Cola.js - Bibliothek für Constraint-Diagramme

Die Graphen zeichnen sich durch eine ästhetische Anordnung aus, da sich möglichst wenige Linien, die eine gemeinsame Schnittstelle aufweisen, überlappen und die verbundenen Elemente immer einen gewissen Abstand zueinander beibehalten. Dieses Cola.js-Beispiel zeigt den Einsatz in Verbindung mit THREE.js. Dadurch werden auch dreidimensionale kraftgelenkte Diagramme möglich, dessen Umsetzung ohne eine spezielle Bibliothek einen gewissen Schwierigkeitsgrad darstellen würde. Auf der Website von Cola.js finden sich noch weitere Beispiele, das Skript selbst steht als NPM-Modul und in einer Web-Variante bei GitHub bereit.

201508Jul

Indicative.js: JavaScript-Validierung mit Promises

Die Validierung von Benutzereingaben gehört bei Webanwendungen mittlerweile zur Grunddisziplin. Dafür bieten sich neben regulären Ausdrücken mittlerweile auch Micro-Frameworks an, wie beispielsweise is.js. Wer nach einer kompakten Bibliothek sucht, die das Definieren von Schemata erlaubt und zudem auf Promises basiert, sollte sich Indicative.js ansehen. Das Skript wurde von dem PHP-Framework Laravel inspiriert und erlaubt das Erzeugen von Validierungsregeln über JSON-Objekte.

Indicative.js - JavaScript-Validierung mit Promises

Auf der Website finden sich diverse Beispiele, die den Einsatz des Skripts demonstrieren. Interessant ist bei dem Ansatz, dass sich mehrere Regeln in einem Durchgang abarbeiten lassen. Mit ".then()" und ".catch()" können dann erfolgreiche Durchläufe und Fehlerbehandlungen integriert werden. Indicative.js integriert unter Anderem die is.js-Bibliothek und bietet zudem vordefinierte Regeln für Arithmetik, Datum/Uhrzeit, Strings, Typen und reguläre Ausdrücke. Die Bibliothek steht als npm-Modul bereit und kann per Browserify auch im Browser genutzt werden.

201507Jul

WebAssembly: Binärcode in zukünftigen Browsern

Mozilla-Entwickler Brendan Eich hat vor kurzem bekannt gegeben, dass zukünftige Webbrowser mit einem Binärformat ausgestattet werden, das die Ausführung von Binärcode auf einer Low-Level-Ebene ermöglicht: Mit WebAssembly können komplexe Webanwendungen entwickelt werden, die eine hohes Maß an Performance erwarten. WebAssembly-Code wird schneller ausführbar sein, da er eine hohe Maschinenlesbarkeit aufweist und somit nicht erst interpretiert werden muss.

WebAssembly wird auf einem asm.js-Polyfill basieren und ist zum Beispiel auch für Portierungen interessant, wie es die Unreal Engine 3 zeigt. Wer sich für das Thema interessiert, findet auf Medium.com einen interessanten Artikel dazu. Bei SitePoint wird das Thema im Bezug auf Reactive Programming behandelt und bei GitHub steht der aktuelle Design-Entwurf der Binärsprache bereit.
Zum Abschluss sei gesagt, dass WebAssembly kein Ersatz zu JavaScript, sondern lediglich eine Ergänzung sein wird.