Ayer @chillicoder y @mauropm tenian unos cuantos twetts sobre que CoffeeScript es bastante chido, y tiene unas cosas bastante agradables como:
alert "I knew it!" if elvis?
Lo cual ejecuta la funcion alert si y solo si elvis existe. Es una sintaxis agradable y por lo cual en algun punto me intereso aprenderlo a usar.
Hay casos como agregar un callback al evento click en jQuery no cambia mucho la sintaxis. En CoffeeScript es:
$('.account').click(()->alert('account was click'));
$('.account').click(function() { alert('account was click'); });
Sin embargo en la mayoría de los casos, lo que escribo es javascript asíncrono y en la mayoría de los casos uso funciones, para ser mas exacto, funciones como la siguiente:
asyncSomething = function(x, callback) {
x = x * getSomeAsyncvalue();
return callback(x);
};y despues la ejecutamos en algun otro lado de la aplicacion de esta manera:
asyncSomething(5, function(data) {
return console.log(data);
});Son patrones normales de javascript, sobretodo cuando hacemos cosas que implican animaciones de eventos, emisores de eventos y ajax.
En CoffeeScript se veria de la siguiente manera:
asyncSomething = (x, callback) -> x = x*getSomeAsyncvalue(); callback x;
y en otro lado de mi aplicación la ejecutaremos de esta manera.
asyncSomething(5,(data) -> console.log(data));
El (data) -> console.log(data) al llamar mi funcion es algo que no me agrada, mas alla llamar un parametro despues de hacer esto es imposible. Entonces el siguiente ejemplo:
setTimeout(function(){ DoSomething() },1000);
En CoffeeScript se veria como:
setTimeout(()->DoSomething(),1000)
Lo cual primero que nada causa un error de parser y después el declarar ()-> en lugar de function(){} me causa un poco de dolor de cabeza, principalmente si agregas mas de una linea de código. Simplemente me agradan mis parentesis, mis llaves({) y me agrada la sintaxis de javascript.
Para empezar a checar CoffeeScript tienen muchos ejemplos en su pagina, donde todos los ejemplos tiene una opción de load donde pueden empezar a escribir su código y decidir si les gusta o no.
En mi caso, creo que hay algunos casos que la sintaxis es muy bonita, en algunos casos que la sintaxis no aporta mucho a lo que se hace en javascript y ,en muchos casos, solo complica la sintaxis. Espero sus opiniones de coffescript.
Related posts:


Lo estás haciendo mal
, no hay ninguna razón para que tengas las funciones en una sola línea, y de hecho, la belleza de coffeescript se aprecia cuando precisamente usas varias lineas.
Nota que a) los parentesis en la definición de una función son opcionales, b) puedes obviar el return statement, porque las expresiones en coffeescript siempre regresan el último valor. c) Como en python, la identación es parte de la sintaxis.
Rayos, wordpress escapó mis >
Otra cosa que amo de coffeescript es la manera en que simplifica las condicionales, supón que quieres comprobar que el segundo argumento en asyncSomething es efectivamente una función antes de ejecutarla.
a poco no es super legible?
Me esta dando un poco de problemas tu código cuando lo pruebo en http://jashkenas.github.com/coffee-script/ checare de compilarlo con node y darle otra oportunidad.
Eso también se podría escribir como
Supongo que es cuestión de semántica mas que de forma.
En parte estoy de acuerdo contigo, ya que a mi también me gustan los paréntesis, y las llaves para indicar inicio y fin de una función.
Pues he estado aprendiendo coffescript y la verdad no me tinka en nada, siento que estoy gastando parte de mi cerebro en aprender algo que se puede hacer sin necesidad de tanto minimalismo, hablo de la misma sintaxis javascript. Stylus por su parte en CSS si parece una gran herramienta y Jade como engine template para Node tambien es super amigable. Bueno en gusto y sabores nadie manda, o no?