201609Jul

JavaScript: Asynchrone Abläufe mit Zonen steuern

Die Arbeit mit asynchronen Abläufen kann in JavaScript seit geraumer Zeit durch Promises und entsprechenden Bibliotheken erleichtert werden. Gerade JSON-Requests und deren Verarbeitung wird durch Promises wesentlich einfacher, da keine verschachtelten Callbacks mehr benötigt werden. Verbinden lassen sich asynchrone Abläufe auch mit Observables, wie man sie beispielsweise von Knockout kennt. Angular 2 etwa greift hierfür auf die ReactiveX-Observables zurück. Ebenfalls neu in Angular 2 ist das Konzept von Zonen: Bei einer Zone handelt es sich um einen Ausführungsbereich, der sich über asynchrone Aufrufe erstreckt. In JavaScript wird dadurch das Konzept eines lokalen Threadspeichers simuliert.

JavaScript - Asynchrone Abläufe mit Zonen steuern

Das AngularJS-Team hat für diesen Zweck die Bibliothek Zone.js entwickelt, die fester Bestandteil von Angular 2 ist und mittlerweile auch als Standalone-Bibliothek genutzt werden kann. Inspiriert wurde Zone.js von dem Zonen-Konzept von Dart. Mit Zonen lassen sich also asynchrone Verarbeitungen, wie etwa setTimeout oder Promises, gezielt steuern. Eine vereinfachte Implementierung von Zonen gibt es zum Beispiel mit can-zone. Auf der GitHub-Seite finden sich Code-Beispiele, wie einfache Zonen umgesetzt werden können. Bis es Zonen in den EMCAScript-Standard schaffen, dürfte noch eine Weile vergehen. Bis dahin eignen sich derartige Frameworks also bestens.

201604Jun

Angular 2 Seed: TypeScript-Starter-Kit für WebApps

Das Angular-Framework geht in die zweite Runde und auf der offiziellen Website befinden sich bereits ausführliche Tutorials und Ressourcen für Entwickler, die mit der neuen Version der Bibliothek arbeiten möchten. Angular 2 stellt eine Rundumerneuerung dar, bei der sich Einiges geändert hat: So wurden etwa Controller durch Components ersetzt, das $scope existiert in der Form nicht mehr und die Entwickler sind gänzlich auf ein Modulsystem umgestiegen. Zudem kommt RxJS zum Einsatz, was die Arbeit mit asynchronen Abläufen vereinfacht. Auch die Template-Syntax hat sich grundlegend geändert. Alles in allem ist Angular 2 aber schon jetzt ein durchdachtes und gelungenes Framework — wer sich die Alpha- und Beta-Versionen angesehen hat, dürfte einen ersten Eindruck erhalten haben.

Angular 2 Seed - A basic Angular 2 TypeScript starter project

Da ich mit den derzeitigen Seeds, also Angular 2-Boilerplates, nicht zufrieden war, habe ich einen eigenen Seed erstellt: Es handelt sich dabei um eine beispielhafte Single-Page-Application (SPA), die auf TypeScript, Sass und SystemJS basiert. Die Webanwendung enthält einen Login-Bereich sowie eine Dashboard-Ansicht, so dass es autorisierte und öffentliche Bereiche gibt. Zudem gibt es ein Directive, einen Service sowie eine Pipe. Auch eine Fehlerseite und das damit verbundene Routing-Konzept sind enthalten. Für die TypeScript- und Sass-Kompilierung sowie die Erzeugung des Angular 2-Bundles (SystemJS) kommt Gulp zum Einsatz. Hiermit kann auch eine Produktionsversion der WebApp erzeugt werden, bei der JavaScript und CSS jeweils in eine Datei zusammengeführt werden.
Eine Online-Demo des Angular 2-Seeds gibt es auf dieser Seite. Das Projekt steht bei GitHub zum Download bereit. Aktuell kommt bei dem Seed der RC4 von Angular 2 zum Einsatz.

201618Mai

GearAward: Digitale Kunstwerke von JavaScript-Künstlern

Dass sich mit HTML5, JavaScript und Canvas bzw. WebGL auch künstlerische Projekte umsetzen lassen, dürfte mittlerweile klar sein. Auf Seiten wie der GLSL Sandbox oder CreativeJS lassen sich derartige Werke begutachten. Eine weitere Seite, auf der digitale JavaScript-Kunstwerke gesammelt werden, stellt nun auch GearAward dar. Hier werden sämtliche 2D- und 3D-Effekte aufgelistet, die auch den dazugehörigen Quellcode beinhalten.

GearAward - Code-driven art

So finden sich dort etliche Canvas-Animationen, aber auch interessante WebGL-Beispiele wie etwa die THREE Image Transition, die aufwendige Bildübergänge auf Basis von THREE.js demonstriert. Bei GearAward dürften sich in der nächsten Zeit sicherlich noch mehr Beiträge finden, so dass man die Seite als Inspirationsquelle im Auge behalten sollte.

201629Mär

WebGL: Einführung in GLSL und 3D-Grundlagen

Wer sich für das Gebiet der 3D-Grafik interessiert und diese zudem im Browser darstellen möchte, kommt an WebGL und den Grundlagen von 3D-Grafikprogrammierung nicht vorbei. Es handelt es sich um ein mittlerweile sehr komplexes Feld, zumal auch die Anforderungen an dreidimensionale Darstellungen steigen. Bei WebGL handelt es sich um ein Subset von OpenGL, genauer gesagt basiert WebGL auf OpenGL ES (OpenGL for Embedded Systems). Es gibt ein paar Unterschiede im Vergleich zur OpenGL-API und was Shader betrifft, stehen in WebGL lediglich Vertex- und Fragment-Shader zur Verfügung — mit diesen beiden Arten von Shadern lassen sich dennoch aufwendige Effekte erzielen.

Can I use - WebGL 2016

Wenn man einen Blick auf die Browser wirft, die WebGL derzeit ganz oder teilweise unterstützen, lässt sich folgern, dass etwa 85% der Webbrowser mit dem 3D-Standard arbeiten können.
Der Einstieg in die Materie ist in diesem Bereich nicht gerade einfach, deshalb empfiehlt sich eine Anleitung wie die von Ilya Pestov. Es handelt sich dabei um eine Übersetzung eines russischen Artikels, der wiederum einen guten Einstieg in WebGL darstellt. Es werden GL-Grundlagen, Shader sowie Matrizen behandelt und schließlich wird am Ende ein rotierender 3D-Würfel mittels GLSL und JavaScript erzeugt.