CoffeeScript

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
CoffeeScript
Парадигма об'єктно-орієнтована,
імперативна,
функціональна,
аспектно-орієнтована,
прототипна мова
Дата появи 2009
Творці Джеремі Ашкеназ (англ. Jeremy Ashkenas)
Розробник Джеремі Ашкеназ
Останній реліз
Система типізації динамічна типізація[d]
Під впливом від JavaScript, Python, Ruby, Haskell
Мова реалізації CoffeeScript[1]
Операційна система кросплатформова програма
Ліцензія MIT[2]
Звичайні розширення файлів .coffee
Репозиторій вихідного коду github.com/jashkenas/coffeescript
Вебсайт coffeescript.org

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

JavaScript код, який компілюється з CoffeeScript повністю проходить перевірку JavaScript Lint [Архівовано 4 липня 2012 у Wayback Machine.].

Історія[ред. | ред. код]

Спочатку компілятор був написаний на 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 [Архівовано 23 липня 2012 у Wayback Machine.], асинхронних запитів відбуватися не буде, оскільки код компілюється безпосередньо в вашому браузері.

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

Література[ред. | ред. код]

Посилання[ред. | ред. код]