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

Див. також

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

Примітки

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

Література

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

Посилання

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