Tag: tricks

201330Nov

Webentwicklung: Interaktive Tutorials für HTML5-Games

Seit der Einführung des Canvas-Elements steht auch HTML-Spieleentwicklern eine Grafikschnittstelle zur Verfügung, mit der sich auch komplexere Animationen und Effekte umsetzen lassen. Dabei muss nicht mehr auf CSS ausgewichen werden und zudem ist die Entwicklung dank JavaScript und der Canvas-API denkbar einfach. Doch ein HTML5-Spiel besteht nicht nur aus der Kommunikation mit der Schnittstelle, sondern erfordert vor allem Kreativität und natürlich Verständnis für mathematische Gegebenheiten.
Bei Crunchzilla finden sich interaktive Anleitungen für die Entwicklung von Browser-Games: Dabei sind die Tutorials in die Bereiche "Code Monster", "Code Maven" und "Game Maven" unterteilt.

Crunchzilla - Interaktive Tutorials für HTML5-Games

Die Bereiche sind sowohl an Jugendliche als auch an Erwachsene gerichtet: In einem Live-Editor kann JavaScript-Code bearbeitet werden und rechts daneben findet sich die entsprechende Echtzeit-Vorschau. Ein virtueller Mentor führt angehende Spieleentwickler von Beginn an durch die verschiedenen Kurse und gibt Tipps zur Entwicklung bestimmter Szenarien. So werden nach und nach kleine Spiele im Browser entwickelt, die sich durchaus sehen lassen können.

201326Nov

JavaScript: Angular und Backbone im Vergleich

Über aktuelle MVC- und MVVM-Frameworks gibt es bereits interessante Artikelreihen, in denen die unterschiedlichen Aspekte der Bibliotheken beleuchtet werden. Entwickler haben die freie Wahl zwischen Angular, Backbone, Ember, Knockout und weiteren "Next-Gen-Frameworks". Da es immer unterschiedliche Sichtweisen gibt, kann es bei der Auswahl hilfreich sein, verschiedene Quellen anzusehen. So gibt es bei InfoQ einen weiteren Beitrag, in dem die Kernaspekte von Angular und Backbone etwas genauer betrachtet werden.

InfoQ -  Contrasting Backbone and Angular

Der Beitrag behandelt verschiedene Themengebiete, die bei der Umsetzung einer Webanwendung eine Rolle spielen: Business-Logik, DOM-Struktur, View-Logik, Model-View-Synchronisation, Interaktionen, Routing und Komponenten. In Tabellen werden jeweils die zutreffenden Verhaltensweisen von Backbone und Angular bei diesen Themen aufgelistet. Zusätzlich wird der Beitrag durch Abbildungen ergänzt, womit er auf jeden Fall ein besseres Bild der beiden Bibliotheken vermitteln dürfte.

201325Nov

jQuery Evergreen: jQuery-API für moderne Webbrowser

Moderne Webbrowser, die mit ECMAScript 5 ausgestattet sind, bieten bereits eine umfangreiche Funktionssammlung, die nicht mehr komplett mit jQuery ersetzt werden muss. Die Selector-Engines der Browser wurden erweitert und mit CSS3 lassen sich viele Animationen umsetzen, für die vorher jQuery notwendig war. Aus diesem Grund gibt es bereits diverse Micro-Libraries wie Min.js oder Zepto, die nur mit dem Nötigsten ausgestattet sind.
Lars Kappert hat nun mit jQuery Evergreen auch das jQuery-Pendant fertiggestellt: Eine API, welche auf die Fähigkeiten von aktuellen Webbrowsern aufbaut und dennoch den Komfort der beliebten JavaScript-Bibliothek bietet.

jQuery Evergreen - Lean and mean jQuery API for modern browsers

So lassen sich Events mi ".on()" und ".off()" zuweisen und entfernen und DOM-Manipulationen mit "addClass()" sind ebenfalls möglich. Weiterhin wurde die "find()"-Methode sowie "$.attr()" eingebaut. Lediglich die komplexeren Bereiche von jQuery wie "$.animate", "$.ajax" und "$.Deferred" wurden nicht umgesetzt. Für Internet Explorer 9 wird zudem ein Polyfill benötigt, der den Browser um die native "classList"-API erweitert.
jQuery Evergreen wurde übrigens im ES6-Stil geschrieben und in Module gekapselt. Es kann in den gängigen Browsern verwendet werden, da es mit dem ES6 Module Transpiler in AMD-Syntax konvertiert wurde.

201324Nov

JavaScript: Type-Checking mit Object.prototype.toString()

JavaScript ist dynamisch typisiert — und objektorientiert. Ersteres hat nicht immer positive Folgen im Alltag eines Entwicklers: Typfehler treten erst zur Laufzeit auf und auch das Feststellen von Typen ist nicht ganz einfach, da die Funktion "typeof" stets den Typ "object" zurückgibt. Folgende Abfragen verdeutlichen das Ganze:

  • typeof []; // object
  • typeof {}; // object
  • typeof null; // object
  • typeof document.createElement("div"); // object
  • typeof /abcd/; // object

Hilfreich ist die Verwendung von "typeof" also nicht, wenn der Typ wirklich genau bestimmt werden soll. Abhilfe schafft hier die native Funktion "Object.prototype.toString()", mit der sich auch der Name der Klasse zurückggeben lässt, von welcher das Objekt abgeleitet wurde. Für die maximale Typkontrolle sind dann noch ein paar Anpassungen notwendig, da beispiels "NaN" auch als "Number" gewertet wird. Diese Anpassungen haben die Entwickler von Badoo umgesetzt und in diesem Beitrag veröffentlicht. Die daraus entstandene Hilfsfunktion "type()" kann also sehr nützlich sein, wenn es um die Bestimmung von Typen in JavaScript geht.

201320Nov

TogetherJS: Echtzeit-Kollaboration auf Website einbinden

Das Projekt ist zwar schon etwas älter, aber vielleicht nicht jedem bekannt: Mit Mozillas TogetherJS lässt sich ein kleines Tool zur Echtzeit-Kollaboration auf einer beliebigen Website einbetten: Nach der Einbindung wird eine kompakte Benutzeroberfläche eingeblendet, über die sich weitere Benutzer zu der aktiven Sitzung einladen lassen. Teilnehmer innerhalb einer Session können dann auf der Website miteinander chatten und die Elemente der Seite verwenden. Andere Benutzer können dabei den Mauszeiger und die Tastatureingaben in Echtzeit verfolgen.

TogetherJS - Collaboration made easy

TogetherJS arbeitet mit Web Sockets und ein Mozilla-Server (Hub) kümmert sich um das Weiterleiten der Pakete. Lediglich das Skript und ein Button zur Aktivierung müssen auf der gewüntschten Website eingebunden werden.

  • <script src="https://togetherjs.com/togetherjs-min.js"></script>
  • <button onclick="TogetherJS(this); return false;">Start TogetherJS</button>

Auf der Website des Projekts gibt es auch Beispiele, die das Testen von TogetherJS in Echtzeit erlauben. Das Skript dürfte sich für viele Szenarien als nützlich erweisen, beispielsweise bei Hilfestellungen in einem Content-Management-System oder um Website-Feedback einzuholen.

201317Nov

Apollo.js: Mini-Bibliothek für CSS-Klassen-Manipulation

Die Bedeutung von Standalone-Bibliotheken wird immer wichtiger und so müssen nicht mehr alle Aufgaben in JavaScript zwingend mit jQuery gelöst werden. Wenn es also etwa um die Manipulation von CSS-Klassennamen geht, also das Hinzufügen, Entfernen oder Überprüfen von CSS-Klassen eines DOM-Elements, dann kann eine kleine Bibliothek wie Apollo.js aushelfen.

Apollo.js - Standalone class manipulation API for HTML5 and legacy DOM

Das kompakte Skript biete eine kleine API, welche die Methoden "addClass", "removeClass", "toggleClass" und "hasClass" bereitstellt. Die Bezeichnungen dürften selbsterklärend sein und die Verwendung ist ebenfalls einfach:

  • Apollo.addClass(document.body, "js");

Apollo überprüft die Fähigkeiten des Browsers und greift, sofern möglich, auf die "classList"-API von HTML5 zurück. Für Legacy-Browser werden reguläre Ausdrücke als Polyfill verwendet. Die Bibliothek ist auch für moderne Websites noch interessant, da Internet Explorer 9 die classList-API noch nicht unterstützt.

201312Nov

Firefox: Shader Editor ermöglicht Echtzeit-Bearbeitung

Für OpenGL- bzw. WebGL-Entwickler dürfte dank Mozilla ein kleiner Traum in Erfüllung gehen: Ab Firefox 27, der momentan über den Nightly-Kanal heruntergeladen werden kann (inzwischen schon Version 28), wird in den Firefox Developer Tools ein "Shader Editor" integriert sein. Wie in diesem Artikel nachzulesen ist, kann der Shader Editor über die Einstellungen des Entwickler-Panels aktiviert werden. Die Seite muss neu geladen werden, damit der WebGL-Kontext erkannt werden kann. Ist dies geschehen, können alle einzelnen Shader-Programme der laufenden WebGL-Anwendung in Echtzeit bearbeitet oder deaktiviert werden. Dabei ist besonders hilfreich, dass die Codes des Vertex- und Fragment-Shaders separat voneinander bearbeitet werden können.

Firefox - Live editing WebGL shaders with Firefox Developer Tools

Allein die "Epic Citadel"-Anwendung, eine Web-Demo der Unreal Engine, verwendet über 200 verschiedene Shader — also kleine Programme, welche direkt auf der GPU der Grafikkarte ausgeführt werden und grafische Echtzeit-Effekte erlauben. Mit Shadern lassen sich hochkomplexe Visualisierungen und Animationen umsetzen, die allerdings nicht immer leicht zu verstehen sind. Daher stellt der Shader Editor eine große Hilfe dar, wenn es um das Verständnis eines Shader-Programms geht. Wer den Editor ausprobieren will, kann beispielsweise auch die Shader der GLSL Sandbox verändern und die Auswirkungen sofort betrachten.

201311Nov

AngularJS: Release 1.2.0, Caching und Animationen

Auch bei AngularJS hat sich in dieser Woche wieder Einiges getan: Zum einen wurde die stabile Version 1.0.8 nun durch den Release der Version 1.2.0 ersetzt — hier gibt es einige Neuerungen, die unter Anderem Animationen, striktes Escaping, die ng-repeat-Directive sowie die "Controller as"-Syntax betreffen. Weiterhin gibt es ein paar Tipps zum Caching mittels "$cacheFactory" und der Verwendung eines LRU-Caches (Least Recently Used) und schließlich wurde noch ein Artikel über Performance-Optimierung durch DOM-Caching und Watcher-Anpassungen veröffentlicht.

AngularJS - Superheroic JavaScript MVW Framework

Den Round-Up gibt es hier als Liste: