Código “CoffeeScript” compilado = javaScript

 coffeScript-logoCoffeeScript es un pequeño y elegante lenguaje de programación que compila en JavaScript creado por Jeremy Ashkenas haya por el 2009.

Si conoces bien JavaScript no te costará nada de trabajo aprender CoffeeScript y muy probablemente agradecerás lo elegante y simple de su sintáxis, la cual se inspira mucho en Ruby o Python. Pero CoffeeScript no se trata solo de quitar parentesis y corchetes a JavaScript, sino que el lenguaje incluye bondades como comprensiones y herencia pseudo-clásica. Además de que el código generado está tan optimizado, que no es de sorprender que a menudo el JavaScript resultante sea mucho más eficiente que uno tecleado a mano a pesar de seguir siendo bastante legible.

La regla de oro de CoffeeScript es: “Es simplemente JavaScript“.  El código se compila uno a uno en el JS equivalente, y no hay una interpretación en tiempo de ejecución.  Se puede usar cualquier biblioteca de JavaScript sin problemas desde CoffeeScript (y viceversa).  La salida del compilado es legible y elegante, y como ya mencioné  tiende a correr tan rápido o más rápido que el código JavaScript a escrito a mano.

coffeScript-logo-tasa

Ejemplo:

Codigo CoffeScript Código JavaScript resultante
  var cubes, list, math, num, number, opposite, race, square, __slice = [].slice;
# Variables:
number   = 42
opposite = true
number = 42; opposite = true;
# Condiciones number = -42 if opposite if (opposite) {
  number = -42;
}
# Funciones:
square = (x) -> x * x
square = function(x) {
  return x * x;
};
# Arrays:
list = [1, 2, 3, 4, 5]
list = [1, 2, 3, 4, 5];
# Objects:
math =
  root:   Math.sqrt
  square: square
  cube:   (x) -> x * square x
math = {
  root: Math.sqrt,
  square: square,
  cube: function(x) {
    return x * square(x);
  }
};
# Splats:
race = (winner, runners...) ->
  print winner, runners
race = function() {
  var runners, winner;
  winner = arguments[0], runners = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
  return print(winner, runners);
};
# Array comprehensions:
cubes = (math.cube num for num in list)
cubes = (function() {
  var _i, _len, _results;
  _results = [];
  for (_i = 0, _len = list.length; _i < _len; _i++) {
    num = list[_i];
    _results.push(math.cube(num));
  }
  return _results;
})();

 

 

Sitio oficial

Documentación

Leave a Reply

Your email address will not be published. Required fields are marked *