CoffeeScript: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
изменена последняя версия
Спасено источников — 4, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.8.7
Строка 6: Строка 6:
[[Объектно-ориентированное программирование|объектно-ориентированный]], [[Императивное программирование|императивный]], [[Функциональное программирование|функциональный]], [[Аспектно-ориентированное программирование|аспектно-ориентированный]], [[Прототипное программирование|прототипный]]
[[Объектно-ориентированное программирование|объектно-ориентированный]], [[Императивное программирование|императивный]], [[Функциональное программирование|функциональный]], [[Аспектно-ориентированное программирование|аспектно-ориентированный]], [[Прототипное программирование|прототипный]]
| class =
| class =
| последняя версия = 2.6.1<ref>{{Cite news|title=2.6.1|url=https://github.com/jashkenas/coffeescript/releases/tag/2.6.1}}</ref>
| последняя версия = 2.6.1<ref>{{Cite news|title=2.6.1|url=https://github.com/jashkenas/coffeescript/releases/tag/2.6.1|accessdate=2022-04-10|archivedate=2022-03-16|archiveurl=https://web.archive.org/web/20220316145017/https://github.com/jashkenas/coffeescript/releases/tag/2.6.1}}</ref>
| дата выпуска последней версии = {{start date and age|2021|10|05}}
| дата выпуска последней версии = {{start date and age|2021|10|05}}
| latest_preview_version =
| latest_preview_version =
Строка 19: Строка 19:


'''CoffeeScript''' ({{IPA|[’kɔ:fɪ skrɪpt]}}; ''кофи скрипт'') — язык программирования, [[Транслятор|транслируемый]] в [[JavaScript]]. CoffeeScript добавляет [[синтаксический сахар]] в духе [[Ruby]], [[Python]], [[Haskell]] и [[Erlang]] для того, чтобы улучшить читаемость кода и уменьшить его размер.
'''CoffeeScript''' ({{IPA|[’kɔ:fɪ skrɪpt]}}; ''кофи скрипт'') — язык программирования, [[Транслятор|транслируемый]] в [[JavaScript]]. CoffeeScript добавляет [[синтаксический сахар]] в духе [[Ruby]], [[Python]], [[Haskell]] и [[Erlang]] для того, чтобы улучшить читаемость кода и уменьшить его размер.
CoffeeScript позволяет писать более компактный код по сравнению с [[JavaScript]]<ref>[http://coffeescript.org/ Пример на титульной странице официального сайта]</ref>.
CoffeeScript позволяет писать более компактный код по сравнению с [[JavaScript]]<ref>{{Cite web |url=http://coffeescript.org/ |title=Пример на титульной странице официального сайта |access-date=2012-01-18 |archive-date=2017-06-09 |archive-url=https://web.archive.org/web/20170609022520/http://coffeescript.org/ |deadlink=no }}</ref>.
[[JavaScript]]-код, получаемый трансляцией из CoffeeScript, полностью проходит проверку [http://www.javascriptlint.com/ JavaScript Lint].
[[JavaScript]]-код, получаемый трансляцией из CoffeeScript, полностью проходит проверку [http://www.javascriptlint.com/ JavaScript Lint].


Строка 31: Строка 31:
== Реализация ==
== Реализация ==


На официальном сайте языка есть раздел «try coffeescript», позволяющий выполнять программы на нём online<ref>{{Cite web|accessdate = 2016-01-04|title = Try CoffeeScript|url = http://coffeescript.org/#try:alert%2520%2522Hello%2520CoffeeScript!%2522|publisher = coffeescript.org}}</ref>. В отличие, к примеру, от Try Ruby<ref>{{Cite web|accessdate = 2016-01-04|title = Try Ruby: learn the basics of the Ruby language in your browser.|url = http://tryruby.org|publisher = tryruby.org}}</ref>, при этом не будет происходить запросов к серверу, код компилируется и исполняется непосредственно в браузере.
На официальном сайте языка есть раздел «try coffeescript», позволяющий выполнять программы на нём online<ref>{{Cite web|accessdate = 2016-01-04|title = Try CoffeeScript|url = http://coffeescript.org/#try:alert%2520%2522Hello%2520CoffeeScript!%2522|publisher = coffeescript.org|archive-date = 2017-06-09|archive-url = https://web.archive.org/web/20170609022520/http://coffeescript.org/#try:alert%2520%2522Hello%2520CoffeeScript!%2522|deadlink = no}}</ref>. В отличие, к примеру, от Try Ruby<ref>{{Cite web|accessdate = 2016-01-04|title = Try Ruby: learn the basics of the Ruby language in your browser.|url = http://tryruby.org|publisher = tryruby.org|archive-date = 2011-09-28|archive-url = https://web.archive.org/web/20110928182220/http://tryruby.org/|deadlink = no}}</ref>, при этом не будет происходить запросов к серверу, код компилируется и исполняется непосредственно в браузере.


== Примеры ==
== Примеры ==

Версия от 09:12, 6 мая 2022

CoffeeScript
Изображение логотипа
Класс языка
Появился в 13 декабря 2009
Автор Джереми Ашкенас
Расширение файлов .coffee
Выпуск 2.6.1[1] (5 октября 2021; 3 года назад (2021-10-05))
Испытал влияние JavaScript, Python, Ruby, Haskell, Erlang
Повлиял на MoonScript, LiveScript
Лицензия лицензия MIT[2]
Сайт coffeescript.org
ОС кроссплатформенность

CoffeeScript ([’kɔ:fɪ skrɪpt]; кофи скрипт) — язык программирования, транслируемый в JavaScript. CoffeeScript добавляет синтаксический сахар в духе Ruby, Python, Haskell и Erlang для того, чтобы улучшить читаемость кода и уменьшить его размер. CoffeeScript позволяет писать более компактный код по сравнению с JavaScript[3]. JavaScript-код, получаемый трансляцией из CoffeeScript, полностью проходит проверку JavaScript Lint.

История

Создателем языка является Джереми Ашкенас.

Изначально компилятор был написан на Ruby, но в версии 0.5, которая вышла 21 февраля 2010 года, компилятор был реализован на самом же CoffeeScript.

CoffeeScript был радушно воспринят в Ruby-сообществе. Встроенная поддержка CoffeeScript была добавлена в веб-фреймворк Ruby on Rails с версии 3.1.

Реализация

На официальном сайте языка есть раздел «try coffeescript», позволяющий выполнять программы на нём online[4]. В отличие, к примеру, от Try Ruby[5], при этом не будет происходить запросов к серверу, код компилируется и исполняется непосредственно в браузере.

Примеры

Переменные

CoffeeScript:

age  = 2
male = true
name = "Матвей"

JavaScript:

let age = 2,
    male = true,
    name = "Матвей";

Функции

CoffeeScript:

say = (speech) ->
  alert speech

say "Привет мир!"

JavaScript с использованием ECMAScript 2015:

const 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 с использованием ECMAScript 2015:

class Human {
	constructor(name) {
		this.name = name;
	}
}

class Baby extends Human {
	say(msg) {
		alert(`${this.name} говорит '${msg}'`);
	}
	sayHi()	{
		this.say('здравствуй!');
	}
}

const 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 = Human;

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

См. также

Примечания

  1. "2.6.1". Архивировано 16 марта 2022. Дата обращения: 10 апреля 2022. {{cite news}}: |archive-date= / |archive-url= несоответствие временной метки; предлагается 16 марта 2022 (справка)
  2. The coffeescript Open Source Project on Open Hub: Licenses Page — 2006.
  3. Пример на титульной странице официального сайта. Дата обращения: 18 января 2012. Архивировано 9 июня 2017 года.
  4. Try CoffeeScript. coffeescript.org. Дата обращения: 4 января 2016. Архивировано 9 июня 2017 года.
  5. Try Ruby: learn the basics of the Ruby language in your browser. tryruby.org. Дата обращения: 4 января 2016. Архивировано 28 сентября 2011 года.

Литература

Ссылки

Смежные проекты:

  • Компилятор CoffeeScript для Windows
  • CoffeeKup, шаблонизатор и движок для генерации HTML-кода на CoffeeScript.
  • Prepros, компилирует на лету CoffeeScript. Под Windows и OSX (также компилирует LESS, Stylus, Haml, Jade, Markdown, Slim, SASS)