CoffeeScript

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
CoffeeScript
CoffeeScript.png
Класс языка
Появился в

13 декабря 2009

Автор

Джереми Ашкенас

Расширение файлов

.coffee или .litcoffee

Выпуск
Испытал влияние

JavaScript, Python, Ruby, Haskell, Erlang

Повлиял на

MoonScript, LiveScript

Лицензия

лицензия MIT

ОС

кроссплатформенное программное обеспечение

Сайт

coffeescript.org (англ.)
coffeescript.org[2]

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

История[править | править код]

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

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

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

Реализация[править | править код]

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

Примеры[править | править код]

Переменные[править | править код]

CoffeeScript:

age  = 2
male = true
name = "Матвей"

JavaScript:

var age = 2,
    male = true,
    name = "Матвей";

Функции[править | править код]

CoffeeScript:

say = (speech) ->
  alert speech

say "Привет мир!"

JavaScript с использованием ECMAScript 2015:

const 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 с использованием ECMAScript 2015:

class Human {
	constructor( name )	{
		this.name = name;
	}
}

class Baby extends Human {
	say( msg ) {
		alert( `${this.name} говорит '${msg}'` );
	}
	sayHi()	{
		this.say( 'здравствуй!' );
	}
}

const 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 = Human;

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