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.
>>> Подробности












