CoffeeScript, et enkelt språk som kompilerer til JavaScript og tar sikte på å gjøre webutvikleres liv lettere, har nettopp flyttet til en annen stor utgivelse, en som understreker syntaksforbedringer.
CoffeeScript 2, som hadde vært i et beta-stadium siden april, har en kompilator som oversetter CoffeeScript-kode til moderne JavaScript-syntaks. En "klasse" for CoffeeScript sendes nå ut med klasse
søkeord, for eksempel. Versjon 2 har også støtte for syntaks for asynkfunksjoner, fremtidig syntaks for objektdestruksjon og JSX, som er JavaScript med kryssede XML-elementer.
De primære målene med CoffeeScript 2 var å fjerne inkompatibiliteter med JavaScript som kan hindre CoffeScript i å bli brukt til et prosjekt, og å bevare bakoverkompatibilitet i størst mulig grad.
Nye funksjoner ble gjort med få endringer fra 1.x-versjonen, sa CoffeeScript-utviklere. Tidligere hadde teamet advart om at CoffeeScript 2 ville kreve å bryte endringer i samsvar med ECMAScript 2015-spesifikasjonen og over. "De fleste nåværende CoffeeScript-prosjekter skal kunne oppgraderes med liten eller ingen refactoring nødvendig," sa utviklerne. De få bruddendringene involverer bundet (fettpil) funksjoner, bundet generatorfunksjoner og Literate CoffeeScript-parsing, som har blitt omformet for å være mer forsiktig med å ikke behandle innrykkede lister som kodeblokker.
Modernisering av JavaScript-syntaksen betyr at utviklere kan trenge å transpilere kompilatorens utdata, med transpilering som konverterer kildekode til ekvivalent, men annen kildekode. CoffeeScript-dokumentasjon siterer tilfelle der utviklere ønsker å konvertere moderne JavaScript til eldre JavaScript for å kjøre i eldre versjoner av Node.js eller eldre nettlesere. Innebygd støtte for Babel-spilleren er inkludert i CoffeeScript.
Med versjon 2 sender CoffeeScript nå linjekommentarer etter å ha kastet dem i versjon 1.1. Blokkeringskommentarer er nå tillatt hvor som helst, og muliggjør statiske merknader. Kommandolinjeverktøyet for kaffe er også forbedret i oppgraderingen.
Vær oppmerksom på at noen JavaScript-funksjoner er forsettlig utelatt, for eksempel la
og var
, navngitte funksjoner og få
og sett
søkeord. Mens la
og navngitte funksjoner ble utelatt for enkelhets skyld, var
ble utelatt for at CoffeeScript-utviklere ikke skulle måtte håndtere variable erklæringer, og få
og sett
nøkkelord ble utelatt for å unngå grammatisk tvetydighet. CoffeeScripts utelatelse av disse JavaScript-funksjonene påvirker ikke kompatibilitet eller interoperabilitet med JavaScript-moduler eller biblioteker.