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.], асинхронних запитів відбуватися не буде, оскільки код компілюється безпосередньо в вашому браузері.
- 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.