| CoffeeScript | |
|---|---|
| Парадигма | об'єктно-орієнтована, імперативна, функціональна, аспектно-орієнтована, прототипна мова |
| Дата появи | 2009 |
| Творці | Джеремі Ашкеназ (англ.Jeremy Ashkenas) |
| Розробник | Джеремі Ашкеназ |
| Система типізації | динамічна типізація[d] |
| Під впливом від | JavaScript,Python,Ruby,Haskell |
| Мова реалізації | CoffeeScript[1][2] |
| Операційна система | кросплатформність |
| Ліцензія | MIT[3] |
| Звичайні розширення файлів | .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=2male=truename="Христина"
#"ltr">
varage=2,male=true,name="Христина";
CoffeeScript:
say=(speech)->alertspeechsay("Привіт всім!")
#"ltr">
varsay=function(speech){alert(speech);};say("Привіт всім!");
CoffeeScript:
classHumanconstructor:(@name) ->classBabyextendsHumansay:(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 з різними видами властивостей.
classTestsay=(msg) ->alertmsg# приватний метод@echo=(msg) ->console.logmsg# статичний метод, записаний в TestsetHi:(msg) -># динамічний метод, записаний в Test.prototype@hi=->msg# динамічний метод, записаний в екземпляр Test
Так як компілятор CoffeeScript написаний на самому CoffeeScript, ви можете випробувати його онлайн на офіційному сайті, при цьому, на відміну відTry Ruby[Архівовано 23 липня 2012 уWayback Machine.], асинхронних запитів відбуватися не буде, оскільки код компілюється безпосередньо в вашому браузері.