CoffeeScript

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

varage=2,
male=true,
name="Христина";

Функції

[ред.|ред. код]

CoffeeScript:

say=(speech)->
alertspeech

say("Привіт всім!")

JavaScript:

varsay=function(speech){
alert(speech);
};
say("Привіт всім!");

Класи і об'єкти

[ред.|ред. код]

CoffeeScript:

classHuman
constructor:(@name) ->

classBabyextendsHuman
say:(msg) ->alert"#{@name}говорить '#{msg}' "
sayHi:->@say('Уууу!')

matt=newBaby("Марія")
matt.sayHi()

Аналог на JavaScript (саме аналог, а не результат компіляції):

functionHuman(name)
{
this.name=name;
}

functionBaby(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;

varmatt=newBaby("Олена");
matt.sayHi();

Примітка: в JavaScript при роботі з «класами» (конструктор + прототипи + функції для наслідування і змішування) часто використовують обгортки (MooTools,AtomJSта інші). Аналогія на JavaScript з класовою обгорткою AtomJS:

varHuman=Class({
initialize:function(name){
this.name=name;
}
});

varBaby=Class({
Extends:Human,
say:function(msg){
alert(this.name+' говорить '+msg);
},
sayHi:function(){
this.say('Уууу!');
}
});

varmatt=newBaby("Олена");
matt.sayHi();

Приклад класу CoffeeScript з різними видами властивостей.

classTest
say=(msg) ->alertmsg# приватний метод
@echo=(msg) ->console.logmsg# статичний метод, записаний в Test
setHi:(msg) -># динамічний метод, записаний в Test.prototype
@hi=->msg# динамічний метод, записаний в екземпляр Test

Цікаві факти

[ред.|ред. код]

Так як компілятор CoffeeScript написаний на самому CoffeeScript, ви можете випробувати його онлайн на офіційному сайті, при цьому, на відміну відTry Ruby[Архівовано23 липня 2012 уWayback Machine.],асинхронних запитів відбуватися не буде, оскільки код компілюється безпосередньо в вашому браузері.

Див. також

[ред.|ред. код]

Примітки

[ред.|ред. код]

Література

[ред.|ред. код]

Посилання

[ред.|ред. код]