CoffeeScript

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 19:37, 27 серпня 2020, створена DimonBot (обговорення | внесок) (Заміна посилань на категорії-перенаправлення: Категорія:Веб-програмуванняКатегорія:Вебпрограмування)
Перейти до навігації Перейти до пошуку
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 потрібно в 2 рази менше рядків, ніж JavaScript. JavaScript код, який компілюється з CoffeeScript повністю проходить перевірку JavaScript Lint.

Історія

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

Див. також

Література

  • CoffeeScript Cookbook, збірник рецептів CoffeeScript від спільноти.
  • The Little Book on CoffeeScript, введення в програмування на CoffeeScript.
  • Smooth CoffeeScript, вільна електронна книга про CoffeeScript. Доступна у двох варіантах з вихідним кодом прикладів.

Посилання

  1. The coffeescript Open Source Project on Open Hub: Languages Page — 2006.
  2. The coffeescript Open Source Project on Open Hub: Licenses Page — 2006.