CoffeeScript

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая Be nt all (обсуждение | вклад) в 12:54, 10 января 2016 (источники с DeveloperWorks). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
CoffeeScript
Изображение логотипа
Класс языка объектно-ориентированный, императивный, функциональный, аспектно-ориентированный, прототипный
Появился в 13 декабря 2009
Автор Джереми Ашкенас
Расширение файлов .coffee
Выпуск
Испытал влияние JavaScript, Python, Ruby, Haskell, Erlang
Повлиял на MoonScript, LiveScript
Лицензия лицензия MIT[3]
Сайт coffeescript.org
ОС кроссплатформенность

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

История

Создателем языка является Джереми Ашкенас.

Изначально компилятор был написан на Ruby, но в версии 0.5, которая вышла 21 февраля 2010 года, компилятор был реализован на самом же CoffeeScript.

CoffeeScript был радушно воспринят в Ruby-сообществе. Встроенная поддержка CoffeeScript была добавлена в веб-фреймворк Ruby on Rails с версии 3.1.

Реализация

На официальном сайте языка есть раздел «try coffescript», позволяющий выполнять программы на нём online[5]. В отличие от, примеру Try Ruby[6], при этом не будет происходить запросов к серверу, код компилируется и исполняется непосредственно в браузере.

Примеры

Переменные

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

См. также

Примечания

  1. 2.7.0 — 2022.
  2. npmjs
  3. The coffeescript Open Source Project on Open Hub: Licenses Page — 2006.
  4. Пример на титульной странице официального сайта
  5. Try CoffeeScript. coffeescript.org. Дата обращения: 4 января 2016.
  6. Try Ruby: learn the basics of the Ruby language in your browser. tryruby.org. Дата обращения: 4 января 2016.

Литература

  • Марк Бейтс. CoffeeScript. Второе дыхание JavaScript = Mark Bates. Programming in CoffeeScript. — М.: ДМК, 2012. — 312 с. — 300 экз. — ISBN 978-5-94074-842-7.
  • Alex MacCaw. The Little Book on CoffeeScript. — O'Reilly Media, 2011. — 60 с. — ISBN 9781449321055,.
  • CoffeeScript Cookbook, сборник рецептов CoffeeScript от сообщества.
  • Smooth CoffeeScript, свободная электронная книга о CoffeeScript. Доступна в двух вариантах с исходным кодом примеров.
  • Майкл Галпин. Ваша первая чашечка CoffeeScript : Часть 1. Приступаем к работе. DeveloperWorks (19 июля 2012). Дата обращения: 10 января 2016.
  • Эндрю Гловер. Функциональный JavaScript с применением CoffeeScript и Node. DeveloperWorks (3 декабря 2012). Дата обращения: 10 января 2016.

Ссылки

Смежные проекты:

  • Компилятор CoffeeScript для Windows
  • CoffeeKup, шаблонизатор и движок для генерации HTML-кода на CoffeeScript.
  • Prepros, компилирует на лету CoffeeScript. Под Windows и OSX (также компилирует LESS, Stylus, Haml, Jade, Markdown, Slim, SASS)