Vollzeitblogger

Was ist eigentlich CoffeeScript?

January 03, 2014

CoffeeScript ist eine Programmiersprache, die in JavaScript kompiliert wird und sich nicht als Konkurrent, sondern als Präprozessor für JavaScript versteht.

CoffeeScript unterscheidet sich damit von zum Beispiel Dart, da es keine eigene VM oder Laufzeitumgebung hat.

Die Syntax ist stark von Sprachen wie Ruby oder Python inspiriert und setzt auf eine simplere Schreibweise.

CoffeeScript Installation

Um den CoffeeScript Transcompiler zu installieren, reicht ein npm Befehl aus:

<code>npm install -g coffee-script
</code>

Danach ist der Befehl coffee verfügbar, mit dem sich in CoffeeScript geschriebene Dateien in JavaScript übersetzen lassen.

CoffeeScript Syntax Beispiel

In CoffeeScript gibt es nützliche Features, wie multiline Strings und auch eine einfach Arrayhandhabung:

<code>multiLineString = "Dies ist ein String
  über mehrere Zeilen"

werte = Schweigen: "feige", Reden: "Gold"

westernhagen = for aktion, wert of werte
  "#{aktion} ist #{wert}"

console.log westernhagen.join(", ")
</code>

Geschweifte Klammern und einfache Klammern um Argumente von Funktionen sucht man vergebens. Mit dem Befehl coffee -c DateiName.coffee lässt sich der Code nun in JavaScript kompilieren:

<code>// Generated by CoffeeScript 1.6.3
(function() { // -- bare omits this
  var aktion, multiLineString, wert, werte, westernhagen;

  multiLineString = "Dies ist ein String  über mehrere Zeilen";

  werte = {
    Schweigen: "feige",
    Reden: "Gold"
  };

  westernhagen = (function() {
    var _results;
    _results = [];
    for (aktion in werte) {
      wert = werte[aktion];
      _results.push("" + aktion + " ist " + wert);
    }
    return _results;
  })();

  console.log(westernhagen.join(", "));
}).call(this); // --bare omits this
</code>

Wenn man den Befehl ohne den Zusatz --bare ausführt, wird das JavaScript in eine anonyme Funktion gepackt und ausgeführt.

CoffeeScript mit Grunt kompilieren

Um das Kompilieren von CoffeeScript in JavaScript zu automatisieren, kann man von Grunt und dem grunt-contrib-coffee Plugin gebrauch machen.

Hier eine Beispiel Gruntfile.js Datei:

<code>/*
 * Grunt watch & compile coffeescript
 * Dependency Installation: npm install grunt grunt-contrib-watch grunt-contrib-coffee
 */

module.exports = function(grunt){
    grunt.initConfig({
        coffee: {
            compileDefault: {
                options: {
                    bare: true
                },
                files: {
                    'coffee.js': ['coffee.coffee'],
                },
            },
        },
        watch: {
            scripts: {
                files: ['*.coffee'],
                tasks: ['coffee'],
                options: {
                    spawn: false,
                },
            },
        },
    });
    grunt.loadNpmTasks('grunt-contrib-coffee');
    grunt.loadNpmTasks('grunt-contrib-watch');
}
</code>

Mit grunt watch werden nun sämtliche .coffee Dateien laufend auf Änderungen überprüft und in eine entsprechende .js Datei kompiliert.

Fazit

CoffeeScript hat sowohl Freunde als auch Feinde. Ein häufiger Kritikpunkt ist, dass man Entwickler ausschließt, die Coffeescript nicht beherrschen. Außerdem steht die Qualität des Codes, der vom CoffeeScript Compiler generiert wird immer wieder im Mittelpunkt der Diskussion.

Freunde von Zen-coding und keinem Zwang von Semikolon oder vielen Sonderzeichen könnten sich allerdings schnell damit anfreunden.


© 2023, by Jonathan M. Hethey