Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

История [ править ]

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

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

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

Синтаксис [ править ]

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

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

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

const  масса  =  72 const  высота  =  1,78 const  ИМТ  =  масса  /  рост  **  2 if  ( 18,5  <  ИМТ  &&  ИМТ  <  25 )  {  alert ( 'Вы здоровы!' )  }

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

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

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

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

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

НОД = (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 ]  на  2

Линейный поиск может быть реализован с помощью однострочника используя при ключевом слове:

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

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

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

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

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

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

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

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

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

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

$ ( документ ). готов  ->  # Здесь идет код инициализации

Или просто:

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

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

author = "Wittgenstein" quote = "Фотография - это факт. - # {  author  } "предложение = « # {  +22  /  +7  } порядочное приближение П»

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

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

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

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

Разработка и распространение [ править ]

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

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

Последние добавления [ править ]

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

Расширения [ править ]

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

Принятие [ править ]

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

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

Pixel Game Maker MV использует CoffeeScript как часть среды разработки игр. [24]

См. Также [ править ]

  • Haxe
  • Ним (язык программирования)
  • Янтарный Smalltalk
  • Clojure
  • Дарт (язык программирования)
  • Котлин (язык программирования)
  • LiveScript
  • Опа (язык программирования)
  • Elm (язык программирования)
  • Машинопись
  • PureScript

Ссылки [ править ]

  1. ^ "Выпуск 2.5.1" . 31 января 2020 . Дата обращения 1 февраля 2020 .
  2. ^ https://coffeescript.org/ «CoffeeScript заимствует связанные сравнения из Python»
  3. ^ Хеллер, Мартин (18 октября 2011 г.). «Поднимите нос на Дарта и понюхайте CoffeeScript» . InfoWorld . Проверено 15 июля 2020 .
  4. ^ Alex MacCaw (январь 2012). Маленькая книга о CoffeScript . O'Reilly Media . ISBN 978-1-4493-2105-5.
  5. Джош Пик (13 апреля 2011 г.). «Твит члена основной группы Rails» .
  6. ^ «AssetsCoffeeScript - 2.5.x» . www.playframework.com . Проверено 31 октября 2016 .
  7. ^ Эйх, Брендан. « Гармония моей мечты »
  8. ^ Эйх, Брендан. " Моя презентация JSConf.US "
  9. ^ Github. 'начальная фиксация загадочного языка'
  10. ^ Hacker News. Объявление CoffeeScript 1.0.0, опубликованное Джереми Ашкенасом 24 декабря 2010 г.
  11. ^ Hacker News. Оригинальное объявление CoffeeScript, опубликованное Джереми Ашкенасом 24 декабря 2009 г.
  12. ^ coffeescript.org представляет CoffeeScript 2
  13. ^ CoffeeScript называет это « сопоставлением с образцом », что является нестандартным использованием этого термина.
  14. ^ "Официальная страница CoffeeScript" . Проверено 20 ноября 2013 года .
  15. ^ «Проблема неявного определения области видимости в CoffeeScript» . Проверено 13 октября 2018 .
  16. ^ "Обзор CoffeeScript - это безумие" . Проверено 13 октября 2018 .
  17. ^ CoffeeScript архивации 2012-04-27 в Wayback Machine . Jashkenas.github.com. Проверено 21 июля 2013.
  18. Перейти ↑ Sta Cruz, Rico. "js2coffee" . Дата обращения 11 мая 2014 .
  19. ^ "Официальный сайт IcedCoffeeScript" .
  20. ^ Уиллер, Дэн; Махковец, Зига; Варенхорст, Крис (13 сентября 2012 г.). «Dropbox погружается в CoffeeScript» . Проверено 11 мая 2013 года .
  21. Голдштейн, Дэвид (13 мая 2020 г.). «Великий CoffeeScript к миграции машинописных текстов в 2017 году» . Dropbox.Tech . Проверено 30 июня 2020 .
  22. ^ "JavaScript · Руководство по стилям · GitHub" . Github.com. Архивировано из оригинала на 2013-08-15 . Проверено 30 ноября 2015 .
  23. ^ Исходный код Atom . github.com. Проверено 22 июля 2015.
  24. ^ Каллен, Дэниел. "PIXEL GAME MAKER MV (ПК)" . Игра, ориентированная на Христа . Проверено 15 января 2021 года .

Дальнейшее чтение [ править ]

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

Внешние ссылки [ править ]

  • Официальный веб-сайт