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)