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.