coffee-script es un precompilador de javaScript muy bien documentado y, en esencia, sirve para programar de forma más rápida. Se escribe en coffescriptesco, al que me referiré de aquí en adelante por el acrónimo cs, y luego se pasa por un compilador que convierte el código en javaScript normal.
Por ejemplo, esta sentencias en cs:
MiClase = (miParametro) -> "foo"+miParametro
Una vez compilada se convierte en esto:
var MiClase;
MiClase = function(miParametro) {
return "foo" + miParametro;
};
Para usarlo, claro está, hay que instalarlo...
npm install -g coffee-script
... y luego basta con escribir el código cs en un archivo con terminación .coffee y compilarlo desde nuestra consola favorita, que en mi caso es la de git.
coffee --compile nombreArchivo.coffee
Hay una montonera de flags que podemos añadir durante la compilación, como --join, que sirve para concatenar archivos, pero para empezar a trastear el más interesante es --watch, que activa un observador de cambios y así se compila de forma automática cada vez que guardamos el archivo .coffee.
coffee --watch --compile nombreArchivo.coffee
Hay algunos casos donde apenas se gana nada, como ocurre con los condicionales if:
cs
if foo is 3
bazinga()
else
hagaBasin()
js
if (foo === 3) {
bazinga();
} else {
hagaBasin();
}
Pero, en otros, el código es mucho más breve y compacto, como es el caso de los bucles, y la verdad es que la diferencia es espectacular.
cs
miArray = [1, 2, 3]
bazinga elemento for elemento in miArray when elemento is 2
js
var elemento, i, len, miArray;
miArray = [1, 2, 3];
for (i = 0, len = miArray.length; i < len; i++) {
elemento = miArray[i];
if (elemento === 2) {
bazinga(elemento);
}
}
A mí no me interesa mucho, pues escribo muy rápido y me resulta mucho más fácil de entender y manejar el código en javaScriptesco, pero sin duda es un compilador interesante que puede resultar muy útil si se maneja con soltura.