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.],асинхронних запитів відбуватися не буде, оскільки код компілюється безпосередньо в вашому браузері.
- CoffeeScript Cookbook,збірник рецептів CoffeeScript від спільноти.
- The Little Book on CoffeeScript[Архівовано2 січня 2012 уWayback Machine.],введення в програмування на CoffeeScript.
- Smooth CoffeeScript[Архівовано1 травня 2012 уWayback Machine.],вільна електронна книга про CoffeeScript. Доступна у двох варіантах з вихідним кодом прикладів.
- Офіційний сайт CoffeeScript.[Архівовано9 червня 2017 уWayback Machine.]
- Репозиторій CoffeeScript[Архівовано28 серпня 2013 уWayback Machine.]наGitHub.