CoffeeScript – język programowania transpilowany do JavaScriptu. CoffeeScript dodaje lukier składniowy zainspirowany przez Ruby’ego i Pythona, aby zwiększyć łatwość użycia. Język oferuje także bardziej wyrafinowane możliwości, takie jak przetwarzanie tablic i dopasowywanie do wzorców.
CoffeeScript cieszy się stosunkowo dużą popularnością w społeczności programistów Ruby’ego. Twórcy Ruby on Rails stworzyli na jego bazie system szablonów i sam CoffeeScript był również jedną z bibliotek dostarczanych z Ruby on Rails od wersji 3.1. Brendan Eich stwierdził, że CoffeeScript miał wpływ na wersje ES6 języka JavaScript.
Historia W dniu 13 grudnia 2009 roku wykonał pierwszy commit (Git) dla CoffeeScript z komentarzem: „”. Transpilator (parser i lekser) został napisany w języku Ruby. Oficjalne, wstępne wydanie pojawiło się 24 grudnia tego samego roku.
Na początku 2010 roku Ashkenas wydał wersję 0.5, w której kluczową zmianą było zastąpienie Ruby'ego przez transpilator pisany w CoffeeScript z nakładką utworzoną za pomocą generatora parserów Jison (podobnego do Bisona). Jison tworzył kod JavaScript, więc możliwe stało się uruchomienie CS w Node.js. Na tym etapie autor ostrzegał jeszcze o niestabilności CS, w szczególności o możliwych, znacznych zmianach składni CS.
W listopadzie 2010 twórcy Ruby on Rails wydali nowy system szablonów bazujący na CoffeScriptCarson, Ryan. „New Rails-like Framework from 37signals for HTML5 Mobile Apps”, Think Vitamin blog, Nov 8, 2010.. Natomiast 24 grudnia 2010 roku Ashkenas na portalu ogłosił wydanie stabilnej wersji 1.0.0Hacker News. CoffeeScript 1.0.0 announcement zamieszczone przez Jeremy Ashkenas 24 grudnia 2010 rokuHacker News. Original CoffeeScript announcement zamieszczone przez Jeremy Ashkenas 24 grudnia 2009 roku. W sierpniu 2011, wraz z wydaniem Ruby on Rails w wersji 3.1, CoffeeScript stał się jedną z bibliotek dostarczanych w ramach platformy RoR.
W 2011 Brendan Eich, jeden z członków komitetu TC39, przyznał, że CoffeScript jest „dobrze wykonany i wygodniejszy w użyciu niż JS” (wówczas ES5). Jednocześnie zauważył, że CS jako swoisty polyfill nie będzie miał szans osiągnąć podobnej wydajności do JS i to JS powinien się zmieniać w kierunku wygody użycia znanej z CS. W swoim artykule porównywał CS z propozycjami, które zamierza przedstawić TC39 w pracach nad „Harmony” (wersja JS, która później przerodziła się w ES6). Parametry resztkowe oraz wyrażenia lambda (funkcje strzałkowe) znane z CS pojawiły się później w podobnej formie w JS, w tym w wersji ES6 znanej później jako ES2015.
13 września 2012 roku Dropbox ogłosił, że ich kod po stronie przeglądarki został przepisany z JavaScript na CoffeeScript, jednak w maju 2017 roku przeniesiono go do TypeScript.
18 września 2017 roku wydano wersję 2.0.0, która „ma na celu przyniesienie CoffeeScript do współczesnej ery JavaScript, zamykając luki w kompatybilności z JavaScript i jednocześnie zachowując czystą składnię, która jest znakiem rozpoznawczym CoffeeScript”.
Dystrybucja Kompilator CoffeeScript jest od wersji 0.5 i jest dostępny jako pakiet Node.js; jednak rdzeń transpilatora nie wymaga Node.js do działania i można go uruchomić w dowolnym środowisku JavaScript. Jedną z alternatyw dla Node.js jest Coffee Maven Plugin, plugin dla systemu budowania Apache Maven. Istnieje również oficjalny gem Ruby, który jest narzędziem pomostowym do kompilacji CS.
Oficjalna strona na CoffeeScript.org zawiera pola tekstowe, które nie tylko na żywo kompilują CoffeeScript do kodu JavaScript, ale również umożliwiają uruchomienie go bezpośrednio w przeglądarce.
Przykłady Typowy fragment kodu JavaScript z użyciem biblioteki jQuery:
$(document).ready(function() { // Kod inicjalizacyjny });
W CoffeeScript słowo kluczowe function jest zastąpione przez symbol ->. Wcięcia zastępują nawiasy klamrowe, podobnie jak w Pythonie. Dodatkowo, najczęściej nawiasy mogą być pominięte. Analogiczny do powyższego fragment kodu w CoffeeScript wygląda następująco:
$(document).ready -> # Kod inicjalizacyjny
Lub krócej, co wynika z definicji skróconego użycia kodu $(document).ready():
$ -> # Kod inicjalizacyjnyOd ES2015 ten sam kod w JavaScript można zapisać tak:$(() => { // Kod inicjalizacyjny });
Zobacz też Haxe Clojure TypeScript
Przypisy
Linki zewnętrzne CoffeeScript.org – oficjalna witryna Repozytorium kodu na GitHubie
Kategoria:Języki skryptowe Kategoria:Oprogramowanie na licencji MIT Kategoria:Webmastering