- CoffeeScript
-
CoffeeScript Класс языка: объектно-ориентированный, императивный, функциональный, аспектно-ориентированный, прототипный
Появился в: 2009
Автор(ы): Jeremy Ashkenas
Расширение файлов: .coffee
Релиз: 1.3.3 (15 мая 2012[1])
Испытал влияние: Лицензия CoffeeScript[2]
Сайт: CoffeeScript ([’kɔ:fɪ skrɪpt]; кофи скрипт) — язык программирования, транслируемый в JavaScript. CoffeeScript добавляет синтаксический сахар в духе Ruby, Python и Haskell для того, чтобы улучшить читаемость кода и уменьшить его размер. В среднем для выполнения одинаковых действий на CoffeeScript требуется в 2 раза меньше строк, чем JavaScript[3]. 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 # cтатический метод, записан в Test setHi : (msg) -> # динамический метод, записан в Test.prototype @hi = -> msg # динамический метод, записан в экземпляр Test
Интересные факты
Так как компилятор CoffeeScript написан на самом CoffeeScript, вы можете опробовать его в онлайн на официальном сайте, при этом, в отличие от Try Ruby, асинхронных запросов происходить не будет, поскольку код компилируется непосредственно в вашем браузере.
См. также
Примечания
Литература
- CoffeeScript Cookbook, сборник рецептов CoffeeScript от сообщества.
- The Little Book on CoffeeScript, введение в программирование на CoffeeScript.
- Smooth CoffeeScript, свободная электронная книга о CoffeeScript. Доступна в двух вариантах с исходным кодом примеров.
Ссылки
- Официальный сайт CoffeeScript.
- Репозиторий CoffeeScript на GitHub.
- Русскоязычная группа по CoffeeScript
- Русскоязычный сайт по CoffeeScript
Смежные проекты:
- Компилятор CoffeeScript для Windows
- CoffeeKup, шаблонизатор и движок для генерации HTML-кода на CoffeeScript.
Категории:- Появились в 2009 году
- Языки программирования по алфавиту
- Языки программирования
Wikimedia Foundation. 2010.