CoffeeScript — язык программирования, который транслируется в JavaScript. Синтаксис CoffeeScript вдохновлен языками Ruby и Python. Автор языка Джереми Эшкинас (Jeremy Ashkenas) также известен созданием библиотек Underscore и Backbone.
Новый релиз языка направлен на сокращение разрыва между CoffeeScript и современным JavaScript (ES6, ES7). Так =>
и class
транслируются соответственно в =>
и class
. При этом. если в целевом рантайме та или иная возможность JS не поддерживается, может потребоваться дополнительная трансляция итогового JS.
Новое и измененное в версии 2:
- модули:
import
/export
; - классы:
class Animal
; - асинхронные функции:
await someFunction()
; - стрелочные функции:
=>
; - параметры функции по умолчанию:
(options = {}) ->
; - оставшиеся параметры функции:
(items...) ->
; - деструктурирующее присваивание:
[first, second] = items
,{length} = items
; - оператор расширения:
{options..., force: yes}
,{force, otherOptions...} = options
; - шаблонные строки:
"Hello, #{user}!"
; - тегированные шаблонные строки:
html"<strong>coffee</strong>"
; - оператор
for...of
:for n from generatorFunction()
.
Примечательна поддержка JSX прямо в языке:
renderStarRating = ({ rating, maxStars }) ->
<aside title={"Rating: #{rating} of #{maxStars} stars"}>
{for wholeStar in [0...Math.floor(rating)]
<Star className="wholeStar" key={wholeStar} />}
{if rating % 1 isnt 0
<Star className="halfStar" />}
{for emptyStar in [Math.ceil(rating)...maxStars]
<Star className="emptyStar" key={emptyStar} />}
</aside>
Релиз обратно несовместим с версиями 1.X. Помимо прочего.
некоторые возможности ECMAscript не были реализованы, например let
и const
.
>>> Подробности