CoffeeScript ([’kɔ:fɪ skrɪpt]; кофі скрипт) — мова програмування, що транслюється в JavaScript. CoffeeScript додає синтаксичний цукор у дусі Ruby, Python і Haskell для того, щоб покращити читання коду і зменшити його розмір. В середньому для виконання однакових дій на CoffeeScript потрібно в два рази менше рядків, ніж JavaScript.

JavaScript код, який компілюється з CoffeeScript повністю проходить перевірку JavaScript Lint .

Історія

Спочатку компілятор був написаний на Ruby, але у версії 0.5, яка вийшла 21 лютого 2010, компілятор був реалізований на CoffeeScript. CoffeeScript був радо прийнятий в Ruby спільноті. В вебфреймворку Ruby on Rails версії 3.1, CoffeeScript замінив JavaScript.

Приклади

Змінні

CoffeeScript: age = 2 male = true name = "Христина"

JavaScript: var age = 2, male = true, name = "Христина";

Функції

CoffeeScript: say = (speech) -> alert speech

say("Привіт всім!")

JavaScript: var say = function(speech) { alert(speech); }; say("Привіт всім!");

Класи і об'єкти

CoffeeScript: class Human constructor : (@name) ->

class Baby extends Human say : (msg) -> alert "#{@name} говорить '#{msg}'" sayHi : -> @say('Уууу!')

matt = new Baby("Марія") matt.sayHi()

Аналог на JavaScript (саме аналог, а не результат компіляції): function Human(name) { this.name = name; }

function Baby(name) { Human.call(this, name); }

Baby.prototype = Object.create(Human.prototype); Baby.prototype.say = function(msg) { alert(this.name + ' говорить ' + msg); }; Baby.prototype.sayHi = function() { this.say('Уууу!'); }; Baby.prototype.constructor = Baby;

var matt = new Baby("Олена"); matt.sayHi(); Примітка: в JavaScript при роботі з «класами» (конструктор + прототипи + функції для наслідування і змішування) часто використовують обгортки (MooTools, AtomJS та інші). Аналогія на JavaScript з класовою обгорткою AtomJS: var Human = Class({ initialize : function(name) { this.name = name;

});

var Baby = Class({ Extends : Human, say : function(msg) { alert(this.name + ' говорить ' + msg); }, sayHi : function() { this.say('Уууу!');

});

var matt = new Baby("Олена"); matt.sayHi();

Приклад класу CoffeeScript з різними видами властивостей. class Test say = (msg) -> alert msg # приватний метод @echo = (msg) -> console.log msg # статичний метод, записаний в Test setHi : (msg) -> # динамічний метод, записаний в Test.prototype @hi = -> msg # динамічний метод, записаний в екземпляр Test

Цікаві факти

Так як компілятор CoffeeScript написаний на самому CoffeeScript, ви можете випробувати його онлайн на офіційному сайті, при цьому, на відміну від Try Ruby , асинхронних запитів відбуватися не буде, оскільки код компілюється безпосередньо в вашому браузері.

Див. також

Dart HaXe JavaScript

Примітки

Література CoffeeScript Cookbook, збірник рецептів CoffeeScript від спільноти. The Little Book on CoffeeScript , введення в програмування на CoffeeScript. Smooth CoffeeScript , вільна електронна книга про CoffeeScript. Доступна у двох варіантах з вихідним кодом прикладів.

Посилання Офіційний сайт CoffeeScript. Репозиторій CoffeeScript на GitHub.