JavaScript -> CoffeeScript -> JavaScript
Wenn man sich im Web mit JavaScript beschäftigt, begegnet man zur Zeit ständig CoffeeScript. Das führt zwangsläufig dazu, daß man sich CoffeeScript ein mal anschaut und es ausprobieren moöchte. Bevor man gleich mit CoffeeScript beginnt und es sich installiert, kann man es Online interaktiv testen. Auf der CoffeeScript Site gibt es die Möglichkeit CoffeeScript in JavaScript umzuwandeln (dazu im Menü auf “TRY COFFEESCRIPT” klicken), dabei sieht man beim Tippen im linken Fenster, den entsprechenden JavaScript Code im rechten Fenster.
Das Ganze gibt es dann auch andersherum, allerdings auf einer anderen Site (js2coffee). Dort gibt man JavaScript ein und es entsteht CoffeeScript.
Wenn man jetzt beides zusammen nimmt bekommt man die Moöglichkeit Online JavaScript in CoffeeScript und wieder zurück in JavaScript umzuwandeln. Wozu soll das jetzt gut sein? Man kann nun die Vorteile von CoffeeScript verwenden, ohne das man direkt CoffeeScript einsetzt.
Laut der CoffeeScript Site ist der von CoffeeScript generierte Code mindestens gleich schnell wie handgeschriebenes JavaScript und das ist auch plausibel, wenn man bedenkt wie flexibel JavaScript ist.
Günstig zur Klasse
Wenn man mit älterem JavaScript Code arbeitet findet man häufig prozeduralen Code, also Code der nur aus Funktionen besteht. Alle Funktionen sind öffentlich, man hat globale Variablen. Mit der Umwandlung zu CoffeeScript und wieder zurück kann man diese Funktionen schnell zu Klassen, genauer gesagt klassenartigen Objekten, zusammenfassen und den Code so an den “Stand der Technik” anpassen.
Man muss nur ein „class <Klassenname>“ den Funktionen voranstellen und am Ende die öffentlichen Funktionen definieren. Man spart sich damit einiges an Tipparbeit und sieht auch gleich wie man in JavaScript Klassen erstellt, falls man es vorher noch nicht wusste.
Im linken Beispiel sieht man am Anfang eine Funktion namens “a”. Im Schritt zwei wurde der JavaScript Code mit js2coffee nach CoffeeScript umgewandelt. Es wurde eine Klasse erstellt mit “class Klasse”. Die Funktion wurden eingerückt, damit sie der Klasse zugeordnet ist. Am Ende der Klasse wird die Funktion “a” mit der Zuweisung: this.a = a als öffentlich deklariert. Die Klasse ist damit vollständig und wurde im letzten Schritt wieder in JavaScript umgewandelt.
Codequalität
Wie schon angesprochen ist JavaScript recht flexibel. Es macht nicht unbedingt etwas, wenn man ein Semikolon am Ende vergisst, die meisten kennen den Unterschied zwischen == und === nicht, oder das “Hoisting” der Variablendeklarationen. Diese Ungenauigkeiten in JavaScript können zu subtilen Fehlern führen, daher ist es ratsam den Code mit einem Syntaxchecker wie JSLint zu prüfen.
Diese Arbeit nimmt einem CoffeeScript ab, denn CoffeeScript generiert gleich JSLint konformen Code.