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> |
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 ) |
Испытал влияние | 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
См. также
Примечания
- ↑ "2.6.1". Архивировано 16 марта 2022. Дата обращения: 10 апреля 2022.
{{cite news}}
:|archive-date=
/|archive-url=
несоответствие временной метки; предлагается 16 марта 2022 (справка) - ↑ The coffeescript Open Source Project on Open Hub: Licenses Page — 2006.
- ↑ Пример на титульной странице официального сайта . Дата обращения: 18 января 2012. Архивировано 9 июня 2017 года.
- ↑ Try CoffeeScript . coffeescript.org. Дата обращения: 4 января 2016. Архивировано 9 июня 2017 года.
- ↑ Try Ruby: learn the basics of the Ruby language in your browser. tryruby.org. Дата обращения: 4 января 2016. Архивировано 28 сентября 2011 года.
Литература
- Марк Бейтс. CoffeeScript. Второе дыхание JavaScript = Mark Bates. Programming in CoffeeScript. — М.: ДМК, 2012. — 312 с. — 300 экз. — ISBN 978-5-94074-842-7.
- Alex MacCaw. The Little Book on CoffeeScript. — O'Reilly Media, 2011. — 60 с. — ISBN 9781449321055,.
- CoffeeScript Cookbook, сборник рецептов CoffeeScript от сообщества.
- Smooth CoffeeScript Архивная копия от 11 июля 2011 на Wayback Machine, свободная электронная книга о CoffeeScript. Доступна в двух вариантах с исходным кодом примеров.
- Майкл Галпин. Ваша первая чашечка CoffeeScript : Часть 1. Приступаем к работе . DeveloperWorks (19 июля 2012). Дата обращения: 10 января 2016.
- Ваша первая чашечка CoffeeScript: Часть 2. Изучение языка на практических примерах (18 июля 2012). Дата обращения: 10 января 2016.
- Ваша первая чашечка CoffeeScript: Часть 3. Использование CoffeeScript на стороне клиента (20 июля 2012). Дата обращения: 10 января 2016.
- Ваша первая чашечка CoffeeScript: Часть 4. Использование CoffeeScript на стороне сервера (20 июля 2012). Дата обращения: 10 января 2016.
- Эндрю Гловер. Функциональный JavaScript с применением CoffeeScript и Node . DeveloperWorks (3 декабря 2012). Дата обращения: 10 января 2016.
Ссылки
- Официальный сайт CoffeeScript
- Репозиторий CoffeeScript на GitHub
- Перевод официальной документации
- Русскоязычная группа по CoffeeScript
- Русскоязычный сайт по CoffeeScript
- Видеокурс (ru)
Смежные проекты:
- Компилятор CoffeeScript для Windows
- CoffeeKup, шаблонизатор и движок для генерации HTML-кода на CoffeeScript.
- Prepros, компилирует на лету CoffeeScript. Под Windows и OSX (также компилирует LESS, Stylus, Haml, Jade, Markdown, Slim, SASS)