CoffeeScript

редактировать
CoffeeScript
CoffeeScript-logo.png
Paradigm Мультипарадигма : основанная на прототипе, функциональная, императивная, сценарии
Разработано Джереми Ашкенасом
Разработчик Джереми Ашкенас
Впервые появился13 декабря 2009 г.; 10 лет назад (13.12.2009)
Стабильный выпуск 2.5.1 / 31 января 2020 г.; 8 месяцев назад (2020-01-31)
OS Кросс-платформенная
Лицензия Лицензия MIT
Расширения имен файлов .coffee,.litcoffee
Веб-сайтcoffeescript. org
Под влиянием
Haskell, JavaScript, Perl, Python, Ruby, YAML
Под влиянием
MoonScript, LiveScript, JavaScript

CoffeeScript - это язык программирования, который компилируется в JavaScript. Он добавляет синтаксический сахар, вдохновленный Ruby, Python и Haskell, чтобы улучшить краткость и удобочитаемость JavaScript. Конкретные дополнительные функции включают понимание списка и назначение деструктуризации..

Поддержка CoffeeScript включена в Ruby on Rails версии 3.1 и Play Framework. В 2011 году Брендан Эйх упомянул CoffeeScript как источник, влияющий на его мысли о будущем JavaScript.

Содержание

  • 1 История
  • 2 Синтаксис
  • 3 Разработка и распространение
  • 4 Последние добавления
  • 5 Расширения
  • 6 Принятие
  • 7 См. Также
  • 8 Ссылки
  • 9 Дополнительная литература
  • 10 Внешние ссылки

История

13 декабря 2009 г., Джереми Ашкенас сделал первую Git фиксацию CoffeeScript с комментарием: «начальная фиксация загадочного языка». Компилятор был написан на Ruby. 24 декабря он выпустил первый релиз 0.1.0 с тегами и документами. 21 февраля 2010 года он выпустил версию 0.5, которая заменила компилятор Ruby на саморазмещающуюся версию на чистом CoffeeScript. К тому времени проект привлек несколько других участников на GitHub и получал более 300 обращений к страницам в день.

24 декабря 2010 года Ашкенас объявил о выпуске стабильной версии 1.0.0 для Hacker News, сайта, на котором проект был анонсирован впервые.

На 18 сентября 2017 года была представлена ​​версия 2.0.0, которая «направлена ​​на то, чтобы перенести CoffeeScript в современную эру JavaScript, ликвидируя пробелы в совместимости с JavaScript, сохраняя при этом чистый синтаксис, который является отличительной чертой CoffeeScript».

Синтаксис

Практически все является выражением в CoffeeScript, например, if, switchи длявыражений (которые не имеют возвращаемого значения в JavaScript) возвращают значение. Как и в Perl, эти управляющие операторы также имеют постфиксные версии; например, ifтакже может быть записано в форме последующего условия if.

Многие ненужные скобки и фигурные скобки можно опустить; например, блоки кода могут быть обозначены отступом вместо фигурных скобок, вызовы функций неявны, а литералы объектов часто обнаруживаются автоматически.

Чтобы вычислить индекс массы тела, можно сделать (здесь, в JavaScript ):

const mass = 72 const height = 1.78 const BMI = масса / высота ** 2, если (18,5 < BMI BMI < 25) { alert('You are healthy!') }

В CoffeeScript интервал описывается напрямую:

масса = 72 рост = 1,78 ИМТ = масса / рост ** 2 предупреждение «Вы здоровы!», если 18,5 < BMI < 25

Для вычисления наибольший общий делитель двух целых чисел с алгоритмом Евклида, в JavaScript обычно требуется цикл while:

gcd = (x, y) =>{do {z = x % yx = yy = z} while (y! == 0) return x}

Тогда как в CoffeeScript можно использовать дои вместо этого деструктурирующее присваивание:

gcd = (x, y) ->[x, y] = [y, x% y], пока y не станет 0 x

Любой цикл for может быть заменен на понимание списка ; так, чтобы вычислить квадраты положительных нечетных чисел меньше десяти (т.е. чисел, остаток которых по модулю 2 равен 1), можно сделать:

предупредить n * n для n в [1..10], когда n% 2 равно 1

В качестве альтернативы существует:

предупреждение n * n для n в [1..10] by 2

A линейный поиск может быть реализован с однострочным поиском с использованием ключевого слова when:

names = ["Иван", "Иоанна", "Николай", "Михаэла"] linearSearch = (searchName) ->alert (name) для имени в именах, если name - searchName

Синтаксис for... inпозволяет перебирать массивы, в то время как for... ofсинтаксис позволяет перебирать объекты.

Ключевое слово ?быстро проверяет, имеет ли переменная значение nullили undefined:

personCheck = ->, если не person? затем alert ("Нет человека") else alert ("Have person") person = null personCheck () person = "Ivan" personCheck ()

Это предупредит "Нет человека", если переменная nullили undefinedи «Имейте человека», если там что-то есть.

Стандартный фрагмент кода JavaScript, использующий библиотеку jQuery :

$ (document).ready (function () {// Здесь идет код инициализации})

Или даже просто :

$ (function () {// Здесь идет код инициализации})

В CoffeeScript ключевое слово functionзаменяется символом ->, а отступ равен используется вместо фигурных скобок, как в других языках off-side rule, таких как Python и Haskell. Кроме того, круглые скобки обычно можно опустить, используя вместо них уровень отступа для обозначения функции или блока. Таким образом, CoffeeScript-эквивалент приведенного выше фрагмента:

$ (document).ready -># Здесь идет код инициализации

Или просто:

$ -># Здесь идет код инициализации

в стиле Ruby строковая интерполяция включена в CoffeeScript. Строки в двойных кавычках допускают интерполированные значения с использованием # {...}, а строки в одинарных кавычках являются буквальными.

author = "Wittgenstein" quote = "Изображение - это факт. - Предложение # {author}" = "# {22/7} - хорошее приближение к π"

CoffeeScript подвергся критике за необычные правила области видимости. В частности, он полностью запрещает затенение переменных, что делает рассуждения о коде более сложными и подверженными ошибкам в некоторых основных шаблонах программирования, установленных и принимаемых как должное, поскольку были определены принципы процедурного программирования.

Например, со следующим фрагментом кода в JavaScript не нужно смотреть за пределы {}-блока, чтобы точно знать, что нет возможной переменной fooв внешнюю область действия можно случайно переопределить:

//... function baz () {var foo = "bar" console.log (`foo = $ {foo}`)} //...}

В CoffeeScript нет способа определить, ограничена ли область действия переменной блоком или нет, не глядя за пределы блока.

Разработка и распространение

Компилятор CoffeeScript был самостоятельным хостингом с версии 0.5 и доступен как утилита Node.js ; однако компилятор ядра не полагается на Node.js и может быть запущен в любой среде JavaScript. Альтернативой утилите Node.js является плагин Coffee Maven, плагин для системы сборки Apache Maven. Плагин использует движок JavaScript Rhino, написанный на Java.

. На официальном сайте CoffeeScript.org есть кнопка «Попробовать CoffeeScript» в строке меню; щелчок по нему открывает модальное окно, в котором пользователи могут ввести CoffeeScript, просмотреть выходные данные JavaScript и запустить его прямо в браузере. Сайт js2coffee обеспечивает двунаправленный перевод.

Последние добавления

  • Исходные карты позволяют пользователям напрямую устранять ошибки в своем коде CoffeeScript, поддерживая трассировку CoffeeScript при ошибках времени выполнения.
  • CoffeeScript поддерживает форму Literate Programming, используя расширение файла .coffee.mdили .litcoffee. Это позволяет писать исходный код CoffeeScript в Markdown. Компилятор будет рассматривать любые блоки с отступом (способ обозначения исходного кода в Markdown) как код, а остальные игнорировать как комментарии.

Расширения

Iced CoffeeScript - это расширенный набор CoffeeScript, который добавляет два новых ключевых слова: ждатьи откладывать. Эти дополнения упрощают асинхронный поток управления, делая код более похожим на язык процедурного программирования, устраняя цепочку обратных вызовов. Его можно использовать на стороне сервера и в браузере.

Принятие

13 сентября 2012 года Dropbox объявил, что их база кода на стороне браузера была переписана с JavaScript на CoffeeScript, однако в 2017 году он был перенесен на TypeScript. В руководстве по внутреннему стилю

GitHub однажды говорилось: «Напишите новый JS на CoffeeScript» и хотя этого больше нет, все советы в руководстве по стилю относятся к тому, как писать хороший CoffeeScript, и они также написаны на этом языке.

См. также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

Дополнительная литература

  • Ли, Патрик (14 мая 2014 г.). CoffeeScript в действии (первое изд.). Публикации Мэннинга. п. 432. ISBN 978-1617290626.
  • Грозенбах, Джеффри (12 мая 2011 г.). «Знакомьтесь, CoffeeScript» (Первое изд.).. Cite journal требуется | journal =()
  • Бейтс, Марк (31 мая 2012 г.). Программирование на CoffeeScript (первое издание). Эддисон-Уэсли. P. 350. ISBN 978-0-321-82010-5.
  • MacCaw, Alex (31 января 2012 г.). Маленькая книга по CoffeeScript (первое издание). O'Reilly Media. Стр. 62. ISBN 978-1449321055.
  • Бёрнем, Тревор (3 августа 2011 г.). CoffeeScript: ускоренная разработка на JavaScript (Первое изд.). Pragmatic Bookshelf. P. 138. ISBN 978-1934356784.

Внешние ссылки

Последняя правка сделана 2021-05-15 13:53:18
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте