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.