CoffeeScript | |
---|---|
Kieliluokka | oliosuuntautunut , pakottava , toiminnallinen , aspektisuuntautunut , prototyyppinen |
Esiintyi | 13. joulukuuta 2009 |
Tekijä | Jeremy Ashkenas |
Tiedostotunniste _ | .coffee |
Vapauta | 2.7.0 [1] (24. huhtikuuta 2022 ) |
Vaikutettu | JavaScript , Python , Ruby , Haskell , Erlang |
vaikutti | MoonScript , LiveScript |
Lisenssi | MIT-lisenssi [2] |
Verkkosivusto | coffeescript.org |
OS | cross-platform |
CoffeeScript ( ['kɔ:fɪ skrɪpt] ; kahvikirjoitus ) on ohjelmointikieli , joka on käännetty JavaScriptiksi . CoffeeScript lisää syntaktista sokeria Rubyn , Pythonin , Haskellin ja Erlangin tapaan parantaakseen koodin luettavuutta ja pienentääkseen koodin kokoa. CoffeeScriptin avulla voit kirjoittaa kompaktimpaa koodia JavaScriptiin verrattuna [3] . CoffeeScriptistä käännöksellä saatu JavaScript -koodi läpäisee JavaScript Lint -testin täysin .
Kielen luoja on Jeremy Ashkenas .
Alun perin kääntäjä kirjoitettiin Rubylla , mutta versiossa 0.5, joka julkaistiin 21. helmikuuta 2010 , kääntäjä toteutettiin itse CoffeeScriptissä.
Ruby - yhteisö on toivottanut CoffeeScriptin tervetulleeksi . Native CoffeeScript -tuki on lisätty Ruby on Rails -verkkokehykseen versiosta 3.1 lähtien.
Kielen virallisella verkkosivustolla on "try coffeescript" -osio, jonka avulla voit ajaa sillä ohjelmia verkossa [4] . Toisin kuin esimerkiksi Try Ruby [5] , palvelimelle ei lähetetä pyyntöjä, koodi käännetään ja suoritetaan suoraan selaimessa.
CoffeeScript:
ikä = 2 mies = oikea nimi = "Matvey"JavaScript:
anna ikä = 2 , mies = tosi , nimi = "Matvey" ;CoffeeScript:
sanoa = ( puhe ) - > hälytyspuhe sano "Hei maailma!"JavaScript käyttäen ECMAScript 2015:tä:
const sanoa = puhe => hälytys ( puhe ); sano ( 'Hei maailma!' );JavaScript:
var say = toiminto ( puhe ) { hälytys ( puhe ); }; sanoa ( "Hei maailma!" );CoffeeScript:
luokka Ihminen rakentaja : (@nimi) -> luokka Vauva laajentaa Human say : (msg) -> alert " #{ @name } sanoo ' #{ msg } '" sayHi : -> @say ( 'hei' ) matt = uusi Vauva ( "Matvey" ) matta . sano hei ()JavaScript käyttäen ECMAScript 2015:tä:
class Ihminen { rakentaja ( nimi ) { tämä . nimi = nimi ; } } class Vauva laajentaa Ihmisen { sano ( msg ) { alert ( ` ${ this . name } say ' ${ msg } '` ); } sano hei () { tämä . sano ( 'hei!' ); } } const matt = uusi Vauva ( 'Matt' ); matta . sano hei ();Analogi JavaScriptissä (eli analoginen, ei käännöstulos):
toiminto Ihminen ( nimi ){ tämä . nimi = nimi ; } toiminto Vauva ( nimi ){ Ihminen . kutsu ( tämä , nimi ); } vauva . prototyyppi = Objekti . luo ( Human.prototype ) ; _ vauva . prototyyppi . say = function ( msg ){ hälytys ( this . name + ' sanoo ' + msg ); }; vauva . prototyyppi . sayHi = funktio (){ tämä . sano ( 'hei!' ); }; vauva . prototyyppi . rakentaja = Ihminen ; var matt = uusi Vauva ( "Matt" ); matta . sano hei ();Huomautus: JavaScriptissä "luokkien" kanssa työskennellessä (konstruktori + prototyypit + funktiot periytymistä ja sekoittamista varten) käytetään usein kääreitä (MooTools, AtomJS ja muut). JavaScript-analogia AtomJS-luokan kääreen kanssa:
var Ihminen = Luokka ({ alusta : toiminto ( nimi ) { this . name = nimi ; } }); var Vauva = Luokka ({ Laajentuu : Ihminen , sano : function ( msg ) { alert ( this . name + ' say ' + msg ); }, sayHei : function () { this . say ( 'hei' ); } } ) ; var matt = uusi Vauva ( "Matt" ); matta . sano hei ();Esimerkki CoffeeScript-luokasta, jossa on erilaisia ominaisuuksia.
class Test say = ( msg ) -> hälytysviesti # yksityinen menetelmä @echo = (msg) -> konsoli . log msg # staattinen menetelmä, kirjoitettu Test setHi : (msg) -> # dynaaminen menetelmä, kirjoitettu Test.prototype @hi = -> msg # dynaaminen menetelmä, kirjoitettu testiinstanssiinAiheeseen liittyviä projekteja: