CoffeeScript — язык, чтобы писать на JavaScript с более удобным синтаксисом.
Краткий пример на CoffeeScript (с jQuery):
Этот код будет транслирован в:
JavaScript — отличный язык: хорошая идеология прототипного ООП, отличные виртуальные машины типа V8 и прекрасное будущее короля веб-клиентов. С распространением HTML 5, он начнёт теснить Flash и Silverlight. И недавно JS начали рассматривать и как серверный язык (например, node.js).
Вот только в современном мире синтаксического сахара код JavaScript немного тяжёл. При каждой лямбде неправильно писать длинную строку
Вот бы тот же JavaScript, только с немного другим синтаксисом. И успешные примеры смены синтаксиса у нас есть: Haml и Sass для HTML и CSS, соответственно. Они не скрывают от на вёрстку (как ужасный WebForms), а просто позволяют записывать этот же код с немного другим синтаксисом, но мы постоянно контролируем результат трансляции.
CoffeeScript для JavaScript, как Haml для HTML. Позволяет записывать тот же код, немного по другому:
У операторов if и while убраны лишние символы:
А так же есть короткая форма для одной строки
Упрощает синтаксис лямбды. В CoffeeScript, так же как и в Ruby, любая функция возвращает последнее значение.
Позволяет работать с массивами как в Python:
И позволяет проще получать подстроку или часть массива:
Более подробно можно посмотреть на сайте CoffeeScript.
Транслятор CoffeeScript написан на Ruby и распространяется через RubyGems:
С помощью него можно транслировать ваши
Чтобы не забыть оттранслировать файл и не искать призрачную ошибку, можно указать автоматически транслировать все
Установив Narwhal можно экспериментировать с CoffeeScript в интерактивной консоли или выполнять coffee-скрипты вне браузера.
1 — В JavaScript 1.6 есть
Краткий пример на CoffeeScript (с jQuery):
jQuery($ =>
notified: false
$('a').click( =>
if notified
true
else
$('.alert').show()
false..
).
)
Этот код будет транслирован в:
jQuery(function($) {
var notified = false;
$('a').click(function() {
if (notified) {
return true;
} else {
$('.alert').show()
return false;
}
})
})
Введение
JavaScript — отличный язык: хорошая идеология прототипного ООП, отличные виртуальные машины типа V8 и прекрасное будущее короля веб-клиентов. С распространением HTML 5, он начнёт теснить Flash и Silverlight. И недавно JS начали рассматривать и как серверный язык (например, node.js).
Вот только в современном мире синтаксического сахара код JavaScript немного тяжёл. При каждой лямбде неправильно писать длинную строку
function() { … }
, не хватает switch-when и foreach для массивов1. После Ruby и Python даже скобки вокруг условия в if
или обязательные return
кажется лишними символами.Вот бы тот же JavaScript, только с немного другим синтаксисом. И успешные примеры смены синтаксиса у нас есть: Haml и Sass для HTML и CSS, соответственно. Они не скрывают от на вёрстку (как ужасный WebForms), а просто позволяют записывать этот же код с немного другим синтаксисом, но мы постоянно контролируем результат трансляции.
CoffeeScript
CoffeeScript для JavaScript, как Haml для HTML. Позволяет записывать тот же код, немного по другому:
Операторы
У операторов if и while убраны лишние символы:
while a < 20
a += 1.
А так же есть короткая форма для одной строки
student.passed(exam.subject) if exam.mark > 2
Лямбда
Упрощает синтаксис лямбды. В CoffeeScript, так же как и в Ruby, любая функция возвращает последнее значение.
square: x =>
x * x.
square(2)
Массивы
Позволяет работать с массивами как в Python:
# В codes будет ['toast', 'cheese', 'wine']
codes: food.toLowerCase() for food in ['Toast', 'Cheese', 'Wine'].
# Выделить чётные ячейки таблицы
highlight(row) for row, i in table if i % 2 == 0.
И позволяет проще получать подстроку или часть массива:
"abcdef"[0..3]
numbers: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
three_to_six: numbers[3..6].
Более подробно можно посмотреть на сайте CoffeeScript.
Инструменты
Транслятор CoffeeScript написан на Ruby и распространяется через RubyGems:
gem install coffee-script
С помощью него можно транслировать ваши
.coffee
файлы в обычный JavaScript-код:coffee application.coffee
Чтобы не забыть оттранслировать файл и не искать призрачную ошибку, можно указать автоматически транслировать все
.coffee
файлы при изменении:coffee -w *.coffee
Установив Narwhal можно экспериментировать с CoffeeScript в интерактивной консоли или выполнять coffee-скрипты вне браузера.
Примечания
1 — В JavaScript 1.6 есть
Array#forEach()
, а в jQuery есть $.each()
, но они работают медленнее и длинная лямбда всё равно их губит.